guzzle - 如何使用 Guzzle 组合默认查询字符串参数和特定于请求的参数?

标签 guzzle

当我运行以下代码(使用最新的 Guzzle v6)时,请求的 URL 是 http://example.com/foobar?foo=bar删除 boo=far从请求。

$guzzle_http_client = new GuzzleHttp\Client([
    'base_uri' => 'http://example.com/',
    'query' => [
        'foo' => 'bar'
    ],
]);

$request = new \GuzzleHttp\Psr7\Request('GET', 'foobar?boo=far');
$response = $guzzle_http_client->send($request);

当我运行以下代码时,通过 boo=far而是作为 Client::send() 的一部分方法,请求的 URL 是 http://example.com/foobar?boo=far
$guzzle_http_client = new GuzzleHttp\Client([
    'base_uri' => 'http://example.com/',
    'query' => [
        'foo' => 'bar'
    ],
]);

$request = new \GuzzleHttp\Psr7\Request('GET', 'foobar');
$response = $guzzle_http_client->send($request, ['query' => ['boo' => 'far']]);

当然,我要请求的网址是:
http://example.com/foobar?foo=bar&bar=foo

如何让 Guzzle 将默认客户端查询字符串参数与特定于请求的参数结合起来?

最佳答案

您可以尝试使用 'getConfig' 方法获取默认的 'query' 选项,然后将它们与新的 'query' 选项合并,这里是一个示例:

$client = new GuzzleHttp\Client([
    'base_uri' => 'http://example.com/',
    'query'   => ['foo' => 'bar']
]);

然后您可以轻松发送 GET 请求:
$client->get('foobar', [
    'query' =>  array_merge(
        $client->getConfig('query'),
        ['bar' => 'foo']
     )
]);

您可以在此处找到其他信息 Request Options

关于guzzle - 如何使用 Guzzle 组合默认查询字符串参数和特定于请求的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30850531/

相关文章:

php - 如何处理 fatal error : cURL error 7: Failed to connect to xxxx port 443

php - curl错误60 :ssl certificate problenm in youtube data api V3?如何解决

laravel-5 - PHP GuzzleHttp 。如何在 laravel 5.2 中使用 guzzlehttp 上传图像文件?

php - Guzzle HTTP客户端多线程下载文件 : EachPromises vs Pool objects

php - Sage One API - unsupported_grant_type

middleware - 如何修改Guzzle中间件中的参数?

curl - cURL: block 编码数据中的[P] roblem(2)

php - 在 symfony/goutte 中加入 URL

php - 如何正确处理 Guzzle ClientException?我可以将我的调用放入 PHP 中的 Java try catch block 吗?

php - curl 错误 60 : SSL certificate: unable to get local issuer certificate - DigiCert