使用curl,但我的数组不会发布,内容类型标题不会发送

时间:2012-06-25 13:02:46

标签: php xml post curl

这是执行POST的代码:

$url = "http://www.xxxxxxxxxxx.com/dfeed/index.cfm"; //where to send it
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1); // set url to post to
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=ISO-  8859-1'));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40); // times out after 4s
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // add POST fields
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch); // run the whole process
echo $result;
//echo curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);

我的帖子数组开始时使用相同的几个(手动定义的)条目,如下所示:

$data[0] = "<?xml version='1.0' encoding='ISO-8859-1'?>\n";
$data[1] = "<rss xmlns:g='http://base.google.com/ns/1.0' version='2.0'  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'

的xsi:noNamespaceSchemaLocation =的“http://www.xxxxx.com/dFeed/schemas/FeedSchema1.0.xsd'> \ n”个;

其余部分填充在这样的循环中:

array_push($data, "\t<item>\n");

来自服务器的响应表示与我设置的内容类型不同,并且还表示它没有收到任何信息,因此必定是错误的:

HTTP/1.1 400 Bad Request Transfer-Encoding: chunked Content-Type: text/htmlServer: Microsoft-IIS/7.0 X-XXX Server: Web2 Date: Mon, 25 Jun 2012 12:49:53 GMT Bad Request
Error: Not XML
Content received: 

1 个答案:

答案 0 :(得分:0)

charset看起来好像有空格或其他内容,不确定是不是在进入SO或实际代码中。

你真的需要在这个地方添加\ t和\ n,如果你不这样做,服务器也不会在乎。

尝试对post数组进行implode()并发送一串XML。

没有明确的答案,但希望有正确的方向。

告诉我们你的成功,祝你好运。