Guzzle 6 - 获得有效 url
Guzzle 6 - getting the effective url
我刚从 guzzle 3 升级到 guzzle 6
现在我这里有一些代码..
$request = $this->_client->get($url);
$response = $request->send();
$url = $response->getInfo('url');
return $url;
更新到 guzzle 6 后,我发现 getInfo() 和 geteffectiveurl() 已被删除……出于某种原因。所以我的新代码是...
$res = $this->_client->request('GET', $url, ['on_stats' => function (TransferStats $stats) use (&$url) {
$url = $stats->getEffectiveUri();
}])->getBody()->getContents();
return $url;
现在 $url 变量是一个 GuzzleHttp\Psr7\Uri 对象,它并没有真正解决我的问题,因为我只需要 return 和 url 作为一个字符串。
如何隐藏对象 ->
[24-Mar-2017 19:12:26 UTC] GuzzleHttp\Psr7\Uri Object
(
[scheme:GuzzleHttp\Psr7\Uri:private] => https
[userInfo:GuzzleHttp\Psr7\Uri:private] =>
[host:GuzzleHttp\Psr7\Uri:private] => signup.testapp.com
[port:GuzzleHttp\Psr7\Uri:private] =>
[path:GuzzleHttp\Psr7\Uri:private] => /login
[query:GuzzleHttp\Psr7\Uri:private] => username=jeff&blablablablabla
[fragment:GuzzleHttp\Psr7\Uri:private] =>
)
转换为一个简单的字符串,我可以将其传递给另一个请求?
或者我错过了什么? Guzzle 3 中的 getInfo('url') 是一个问题的完美解决方案,确定另一个问题已经取代了吗?
谢谢
\GuzzleHttp\Psr7\Uri
有一个魔法 __toString()
method 可以 return 你将 URI 作为一个字符串。
如果您只是想向完全相同的 URI 发送另一个请求 the docs state
When creating a request, you can provide the URI as a string or an instance of Psr\Http\Message\UriInterface.
这意味着您对同一 URI 的第二个请求可以使用您拥有的 $url
对象执行。
// Your existing code
// I assume this is within a method since it returns $url
$res = $this->_client->request('GET', $url, [
'on_stats' => function (TransferStats $stats) use (&$url) {
$url = $stats->getEffectiveUri();
}
])->getBody()->getContents();
return $url;
// Make a second request to the same URI
// This would be in another method or something after receiving the $url from the above method
$response2 = $this->_client->request('GET', $url);
我刚从 guzzle 3 升级到 guzzle 6
现在我这里有一些代码..
$request = $this->_client->get($url);
$response = $request->send();
$url = $response->getInfo('url');
return $url;
更新到 guzzle 6 后,我发现 getInfo() 和 geteffectiveurl() 已被删除……出于某种原因。所以我的新代码是...
$res = $this->_client->request('GET', $url, ['on_stats' => function (TransferStats $stats) use (&$url) {
$url = $stats->getEffectiveUri();
}])->getBody()->getContents();
return $url;
现在 $url 变量是一个 GuzzleHttp\Psr7\Uri 对象,它并没有真正解决我的问题,因为我只需要 return 和 url 作为一个字符串。
如何隐藏对象 ->
[24-Mar-2017 19:12:26 UTC] GuzzleHttp\Psr7\Uri Object
(
[scheme:GuzzleHttp\Psr7\Uri:private] => https
[userInfo:GuzzleHttp\Psr7\Uri:private] =>
[host:GuzzleHttp\Psr7\Uri:private] => signup.testapp.com
[port:GuzzleHttp\Psr7\Uri:private] =>
[path:GuzzleHttp\Psr7\Uri:private] => /login
[query:GuzzleHttp\Psr7\Uri:private] => username=jeff&blablablablabla
[fragment:GuzzleHttp\Psr7\Uri:private] =>
)
转换为一个简单的字符串,我可以将其传递给另一个请求?
或者我错过了什么? Guzzle 3 中的 getInfo('url') 是一个问题的完美解决方案,确定另一个问题已经取代了吗?
谢谢
\GuzzleHttp\Psr7\Uri
有一个魔法 __toString()
method 可以 return 你将 URI 作为一个字符串。
如果您只是想向完全相同的 URI 发送另一个请求 the docs state
When creating a request, you can provide the URI as a string or an instance of Psr\Http\Message\UriInterface.
这意味着您对同一 URI 的第二个请求可以使用您拥有的 $url
对象执行。
// Your existing code
// I assume this is within a method since it returns $url
$res = $this->_client->request('GET', $url, [
'on_stats' => function (TransferStats $stats) use (&$url) {
$url = $stats->getEffectiveUri();
}
])->getBody()->getContents();
return $url;
// Make a second request to the same URI
// This would be in another method or something after receiving the $url from the above method
$response2 = $this->_client->request('GET', $url);