【问题标题】:Guzzle : Bad query string formattingGuzzle:查询字符串格式错误
【发布时间】:2017-12-28 17:48:46
【问题描述】:

使用此代码,

$client = new \GuzzleHttp\Client(['base_uri'=> 'http://example.com']);
try{
     $data = ['params1'=>'value1', 'params2'=> 'value2'];
     $res = $client->request('GET', '/', ['query'=> $data]);
}catch(\GuzzleHttp\Exception\RequestException $e)
{
      echo $e->getRequest()->getUri();
}

这是输出:

 http://example.com/?params1=value1params2=value2

您可以看到请求uri的字符串查询中没有&符号!

如何解决这个问题?

【问题讨论】:

  • 您确定您使用的是 guzzle 6?
  • 是的! Guzzle v6.0-dev
  • 将您的 guzzle 版本升级到稳定版本。你的代码很好,它会工作

标签: php guzzle guzzle6


【解决方案1】:

应该这样做

$client = new \GuzzleHttp\Client(['base_uri'=> 'http://example.com']);
try{
    $data = ['params1'=>'value1', 'params2'=> 'value2'];
    $res = $client->request('GET', '/', ['query'=> http_build_query($data)]);
}catch(\GuzzleHttp\Exception\RequestException $e)
{
    echo $e->getRequest()->getUri();
}

【讨论】:

  • 比你好多了!有用 !使用 http_build_query 原生函数
【解决方案2】:

这是6.0.1 version 中修复的错误。请使用稳定版本的 guzzle,您的代码将正常运行。

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2012-02-12
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多