guzzle6 - Guzzle 6 : Get URL that was "resolved" from base_uri

标签 guzzle6

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/

相关文章:

php - 使用 guzzle 发送异步请求而不等待响应

guzzle - 在 Guzzle 中访问被拒绝的并发请求的响应

php - 测试 Guzzle 6 下载进度

laravel-5 - Laravel 5.6 模拟 Guzzle 响应

php - 如何使用 GuzzleHttp 执行并发请求

symfony - Guzzle 获取文件并转发

javascript - 完全禁用 Guzzle 的重定向

php - 如何使用 Guzzle 模拟特定 URL 的响应?

php - Guzzle:使用 Guzzle 的 Pool:batch() 和 `sink` 选项并行下载文件

php - 如何使用 Guzzle 6 配置默认查询参数?