在Guzzle 3您可以获得解析后的 URL(无需实际打开它),如下所示:
$client = new Client([
'base_uri' => 'http://foo.com',
]);
$request = $client->get('bar.html');
echo $request->getUrl();
在Guzzle 6这不再起作用了。是否有另一种获取“http://foo.com/bar.html
”的方法?
最佳答案
您可以使用 history 中间件,如宣传的那样工作:
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use Psr\Http\Message\RequestInterface;
$container = [];
$stack = HandlerStack::create();
$stack->push(Middleware::history($container));
$client = new Client([
'base_uri' => 'http://foo.com',
'handler' => $stack,
]);
$response = $client->request('GET', 'bar.html');
/* @var RequestInterface $request */
$request = $container[0]['request'];
echo $request->getUri();
有关引用,请参阅 http://docs.guzzlephp.org/en/latest/testing.html#history-middleware .
关于guzzle6 - Guzzle 6 : Get URL that was "resolved" from base_uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33963826/