【问题标题】:Pass array for GET data in GuzzlePHP在 GuzzlePHP 中为 GET 数据传递数组
【发布时间】:2017-11-24 17:28:24
【问题描述】:

是否可以在 GuzzlePHP 客户端中为GET 请求传递一组数据?

我在文档和 Stack Overflow 上一无所获。

即这不像我预期的那样工作:

// first level of this array is refered as
// request settings: headers, redirects, etc.
$array = [
    'this will be rendered as request settings',
    'data' => [
        'var1' => 'value1',
        'var4' => 'value4',
    ],
];

$client = new \GuzzleHttp\Client();
$res = $client->request('GET', '/redirect/3', $array);

编辑:对于所有无法理解问题的人:

这个请求中没有传递GET参数,所以我只得到这个URL结构:

http://host/redirect/3

预期:

http://host/redirect/3?var1=value1&var4=value4

【问题讨论】:

  • 你得到什么错误?
  • 谁提到了错误?
  • 再次阅读问题。谢谢。
  • 你用的是哪个guzzle版本?

标签: php guzzle


【解决方案1】:

终于找到了。设置键是query 如果anyone else 需要它:

$params = [
    'var1' => 'value1',
    'var4' => 'value4',
];

$client->request('GET', '/redirect/3', [
    'query' => $params
]);

这最终将我的请求的 URL 转换为:

/redirect/3?var1=value1&var4=value4

【讨论】:

    【解决方案2】:

    如果您打开手册,例如http://docs.guzzlephp.org/en/stable/quickstart.html#query-string-parameters,您会看到查询参数应该在query 键下发送。所以你的数组应该是:

    $array = [
        'this will be rendered as request settings',
        'query' => [
            'var1' => 'value1',
            'var4' => 'value4',
        ],
    ];
    

    【讨论】:

    • 我已经在你之后几秒钟发布了我的答案。我会接受你的回答。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多