3

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ますか?

4

2 に答える 2

1

履歴ミドルウェアを使用でき、宣伝どおりに機能します。

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を参照してください。

于 2015-12-20T22:29:02.247 に答える