带有http GET和表单字段的php curl库?
我试图编写的API需要使用HTTP GET谓词的多部分/表单数据内容。在命令行中,我可以这样做:带有http GET和表单字段的php curl库?,php,libcurl,Php,Libcurl,我试图编写的API需要使用HTTP GET谓词的多部分/表单数据内容。在命令行中,我可以这样做: curl-X GET-H“Accept:application/json”-F grant\u type=consumer\u凭证-F consumer\u key=$key-F consumer\u secret=$secrethttps://example.com/api/AccessToken 这在我看来似乎是一个矛盾,但它实际上是有效的,从我所看到的跟踪它实际上使用GET。我用PHP的cUR
curl-X GET-H“Accept:application/json”-F grant\u type=consumer\u凭证-F consumer\u key=$key-F consumer\u secret=$secrethttps://example.com/api/AccessToken
这在我看来似乎是一个矛盾,但它实际上是有效的,从我所看到的跟踪它实际上使用GET。我用PHP的cURL库尝试了很多方法来实现这一点,但我似乎无法让它不使用POST,因为他们的服务器会出错
更新澄清了这个问题:如何让php的cURL库做与命令行相同的事情
这在我看来似乎是一个矛盾,但实际上
工作,从我看到的跟踪实际上使用GET
不完全是。curl使用了HTTP/1.1的一个特性。它在标题
Expect:100 continue
中插入附加字段,如果服务器支持,服务器应通过HTTP/1.1 100 continue
响应该字段,该字段告诉客户端继续其请求。此临时响应用于通知客户端请求的初始部分已被接收,并且尚未被服务器拒绝。客户端应继续发送请求的其余部分,或者,如果请求已完成,则忽略此响应。服务器必须在请求完成后发送最终响应。因为他们坚持HTTPGET,所以只需将表单元素编码到您获取的URL上的查询参数中,并使用cURL的标准GET选项,而不是发布多部分/formdata。-X只会更改method关键字,其他一切都将保持不变,在本例中(使用-F选项)的意思类似于多部分formpost
-F是多部分formpost,您确实无法将其转换为URL中适合典型GET的查询部分,因此这可能不是一个好主意
我猜您实际上希望使用-d来指定要发布的数据,然后使用-G将该数据转换为一个字符串,该字符串将被附加到URL中,这样操作就变成了一个漂亮而干净的GET。是的,在跟踪命令行调用时,我确实看到了正在交换的continue。仍然不知道如何让php cURL lib做同样的事情。@cabbey问题是没有地方可以尝试代码:)顺便问一下,你确定问题出在POST请求上吗?是的,它不完全是一个公共API(通过比较网络跟踪,我排除了所有其他差异。不过,我有一个理论,我正在尝试。@cabbey我尝试了一些东西,php版本的curl只处理post或get。为什么不从命令行使用curl?否则,您需要某种类型的http请求类,可以修改。或者可以使用fsockopen编写自己的代码,等等:)@cabbey这可能会有所帮助(或者,至少会让生活更轻松)。。您应该在发布问题之前搜索该网站。这篇文章应该能帮助你解决你的问题: