2012-06-25 1 views
0

Вот мой код для выполнения процедуры 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'> \ п ";

остальные заселяются в такой цикл:

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: 
+0

Можете ли вы разместить $ data, как указано в этом URL-адресе, и проверить один раз. Http://davidwalsh.name/execute-http-post-php-curl – MMK

+0

Erm ... почему вы отправляете XML в куски, а не отправляете его просто в одном параметре? 400 Ошибки обычно вызваны несоблюдением некоторых правил, установленных владельцем URL. – raina77ow

ответ

0

Кодировку выглядит она пробелы в нем или что-то в этом роде, не уверен, что это было на пути в SO или на самом деле в вашем коде.

Вам действительно нужно добавить \ t и \ n вокруг места, на сервере все равно, если вы этого не сделаете.

Попробуйте implode() из массива сообщений и просто отправьте строку XML.

Нет окончательных ответов, но, надеюсь, что-то в правильном направлении.

Дайте нам знать, как вы поживаете, удачи.

Смежные вопросы