php curl lib with http GET and form fields?


php curl lib with http GET and form fields?

我正在尝试编程的API需要带有HTTP GET动词的多部分/表单数据内容。从命令行中,我可以像这样工作:

curl -X GET -H "Accept: application/json" -F grant_type=consumer_credentials -F consumer_key=$key -F consumer_secret=$secret https://example.com/api/AccessToken

这对我来说似乎是一个矛盾,但它确实有效,从我所看到的跟踪来看,它实际上使用了 GET。 我已经尝试了很多东西来使用它使用 PHP 的 cURL 库,但我似乎无法让它不使用 POST,他们的服务器因错误而踢出。

更新以澄清问题:如何让 php 的 cURL 库执行与该命令行相同的操作?

这对我来说似乎是矛盾的,但实际上 有效,从我所看到的跟踪来看,它实际上使用了 GET

不完全是。curl 使用 HTTP/1.1 的一个特性。它在标头Expect: 100-continue中插入了额外的字段,如果服务器支持,服务器应该通过HTTP/1.1 100 Continue响应,告诉客户端继续其请求。此临时响应用于通知客户端请求的初始部分已收到,并且尚未被服务器拒绝。客户端应通过发送请求的其余部分继续,或者,如果请求已完成,则忽略此响应。服务器必须在请求完成后发送最终响应。

由于他们坚持使用 HTTP GET,那么只需将表单元素编码为您正在 GET 的 URL 上的查询参数,并使用 cURL 的标准获取选项,而不是发布多部分/表单数据。

-X 只会更改方法关键字,其他所有内容都将保持不变,在这种情况下(使用 -F 选项(意味着像多部分 formpost。

-F 是多部分表单,您确实无法将其转换为适合典型 GET 的 URL 中的查询部分,因此这可能不是一个好主意。

你实际上想使用 -d 来指定要发布的数据,然后你使用 -G 将该数据转换为附加到 URL 的字符串,以便操作变成一个漂亮而干净的 GET。