2012-02-07 36 views
2

我有類似的東西:如何檢索完整的Zend_Http_Client GET URI?

$client = new Zend_Http_Client('http://www.site.com'); 
    $client->setParameterGet(array(
     'platform'  => $platform, 
     'clientId'  => $clientId, 
     'deploymentId' => $deploymentId, 
    )); 

    try { 
     $response = $client->request(); 
     ... 

這將產生類似的請求的 'http:???//www.site.com/ plataform = ..的clientid ..'。 有沒有一種方法可以檢索由此GET請求生成的完整URL? 親切的問候,

回答

2

令人驚訝的是,沒有直接的方法獲取完整的請求字符串。 但

  1. 請求完成後,你可以檢查$客戶 - > getLastRequest 後()。
  2. 如果你需要知道什麼?plataform = ..?clientid? 請求的一部分是有一個竅門。

function getClientUrl (Zend_Http_Client $client) 
{ 
    try 
    { 
     $c = clone $client; 
     /* 
     * Assume there is nothing on 80 port. 
     */ 
     $c->setUri ('http://127.0.0.1'); 

     $c->getAdapter() 
      ->setConfig (array (
      'timeout' => 0 
     )); 

     $c->request(); 
    } 
    catch (Exception $e) 
    { 
     $string = $c->getLastRequest(); 
     $string = substr ($string, 4, strpos ($string, "HTTP/1.1\r\n") - 5); 
    } 
    return $client->getUri (true) . $string; 
} 

$client = new Zend_Http_Client ('http://yahoo.com'); 
$client->setParameterGet ('q', 'search string'); 

echo getClientUrl ($client); 
+0

「有招」 或 「要小心」? :) 不管怎麼說,還是要謝謝你。我很驚訝沒有人有過這樣的需要......甚至可能會重寫整個班級並添加這樣的功能... – 2012-02-07 10:33:54

+0

這是一個棘手的技巧。如果你有興趣,我可以給你一個線索。 – akond 2012-02-07 10:42:38

+0

哦,是的,請!它會幫助我很多! :) – 2012-02-07 11:17:37