使用PHP POST cURL发送BOTH参数和正文内容

时间:2017-08-26 20:27:51

标签: php curl

我需要使用PHP发送两个键值对参数 HTTP正文内容(在本例中为XML字符串)。 cURL是我的类似任务的方法,但我无法弄清楚如何使用单个cURL Post请求发送两者。

我可以使用CURLOPT_POSTFIELDS发送一组键值对:

curl_setopt($c, CURLOPT_POSTFIELDS, array('foo' => 'bar', 'fruit' = 'orange));

OR 我可以使用CURLOPT_POSTFIELDS发送XML字符串。

curl_setopt($c, CURLOPT_POSTFIELDS,$xml);

API文档需要请求参数和单个帖子请求中的正文。此API还会限制请求,因此我的每小时调试次数有限。请帮忙。

修改:API文档(请参阅底部的示例):http://docs.developer.amazonservices.com/en_US/feeds/Feeds_SubmitFeed.html

1 个答案:

答案 0 :(得分:1)

你有3个地方你可以放数据,URL本身(技术上不是标题的一部分,这是php获取$ _GET数据的地方),标题(php把它放在$ _SERVER变量中),和邮政机构。

您必须选择要放置数据的这三个地方中的哪一个。最有可能的,你想要的是将array('foo' => 'bar', 'fruit' = 'orange')放在GET网址中,为此:$url='http://example.com?'.http_build_query(array('foo' => 'bar', 'fruit' = 'orange'));

  • 但是如果你真的想要发送POST参数和http请求体中的XML,这可能不是你想要的,但如果你真的确定,那就是:{ {1}} - 也就是说,连接字符串。但这会导致XML文件无效,可能不是您想要的。

  • 如果你想把数据放在标题中,请使用CURLOPT_HTTPHEADER,但要确保其格式为curl_setopt($c, CURLOPT_POSTFIELDS,http_build_query(array('foo' => 'bar', 'fruit' = 'orange').$xml);然后keyname,然后是一个空格,然后是值,但是有' s很多字头对于标题是非法的,在我的头顶,\ r \ n<> \ x00 - 但也有更多。