【问题标题】:Using guzzle to access uri with colon使用 guzzle 访问带有冒号的 uri
【发布时间】:2018-04-18 13:28:45
【问题描述】:

我正在尝试访问此地址 https://companyname.pipedrive.com/v1/deals:(id)?api_token=mytoken 的资源。然而,当使用 guzzle 我总是得到这个异常

GuzzleHttp\Exception\ConnectException:cURL 错误 6:无法解析主机:第 186 行 /var/app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php 中的交易(请参阅 http://curl.haxx.se/libcurl/c/libcurl-errors.html

我认为问题在于 url 中的冒号,因为没有它它可以正常工作。我还尝试向邮递员提出请求,一切正常,所以应该是 guzzle 的问题。有没有办法使这项工作?谢谢

【问题讨论】:

  • 尝试 url 编码你的端点
  • 冒号不是 URL 路径中的有效字符,根据RFC 3986,浏览器可能会在地址栏中显示冒号,但这只是因为浏览器试图使 URL 看起来更漂亮。实际上,浏览器会在正确的 URL 编码后请求 URL。
  • 如果我尝试只对端点进行 urlencode 会导致 501 方法未实现
  • 愚蠢的问题,你的路径为什么要这样命名?
  • developers.pipedrive.com/docs/api/v1/#我正在尝试使用这个api,更具体的字段选择器

标签: php curl guzzle


【解决方案1】:

您是否尝试将冒号替换为等效的 URL 编码 (%3A)?

https://companyname.pipedrive.com/v1/deals%3A(id)?api_token=mytoken

【讨论】:

  • 是的,我试过了,但没有帮助。现在我只是不使用字段选择器。
  • Guzzle 似乎误解了冒号。使用上面的示例,我发现由于冒号的滥用,HTTP 方案设置为“交易”而不是 https。
  • @GregRobson,没有例子就很难说。我建议还是使用 Guzzle 的 query 选项。
  • @AlexeyShokov 最后我放弃了字段规范。 JSON 有效负载并没有那么大,无论如何我都在排队。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
相关资源
最近更新 更多