Curl Request повреждает XML Post Data - PullRequest
3 голосов
/ 15 октября 2011

Я отправляю данные XML в виде запроса POST с curl на сервер следующим образом:

    // $params contains xslt="<xml version ...."
    $url = get_cfg_var('Http_Host') . "/webservice/update.php?";
    $strParameters = http_build_query($params);

    $ch = curl_init($url);
    // Set options
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $strParameters);
    $data = curl_exec($ch);

Теперь, когда я получаю данные в webserive / update.php

$_REQUEST['xslt'] содержиттолько некоторые листовые данные из xml с большинством тегов удалены, как и так [но с большим количеством новых строк]

 USD

  ,
  .


  0 
  5

Я затрудняюсь понять, что происходит.Это проблема двойного кодирования?

strParameters содержит правильные данные в формате urlencoded [+ для пробела и т. Д.]но это все еще не решает проблему.

1 Ответ

0 голосов
/ 15 октября 2011

Это скорее комментарий, чем конкретное решение, но я бы посоветовал использовать метод массива вместо собственной кодировки:

Вам не нужно самостоятельно кодировать пост-данные. Вы можете напрямую использовать массив, см. :

CURLOPT_POSTFIELDS Полные данные для публикации в операции HTTP «POST». [...] Этот параметр может быть передан в виде строки в кодировке urlen, например, 'para1 = val1 & para2 = val2 & ...' *, или в виде массива с именем поля в качестве ключа и данными поля в качестве значения . Если значение является массивом, заголовок Content-Type будет установлен в multipart / form-data.

...