Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: получение данных из xml переданного методом POST

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: получение данных из xml переданного методом POST
dimaxmaster
Отправлено: 28 Марта, 2015 - 20:41:46
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Здравствуйте, я в новичок в php.

Суть задачи.
На apache приходит POST запрос, который содержит xml типа:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transfer action="search">
<Unit value="11111" />
</Transfer>"
Как его прочитать с помощью скрипта php.
Нашел подсказку, вроде как можно обработать кодом:
$rawPostData = $GLOBALS['HTTP_RAW_POST_DATA'];
$xml = new SimpleXMLElement($rawPostData);
foreach ($xml as $key => $value) {
$$key = $value;
echo '$key = '.$key;
echo ', $value = '.$value.'<br/>';
}

Но, при выполнении данного скрипта браузер выдает ошибку
'String could not be parsed as XML' в строке $xml = new SimpleXMLElement($rawPostData);

Гуру php, надежда на вас. Где тут ошибка? Или подскажите может есть другой способ прочитать xml из POST запроса
 
 Top
KingStar
Отправлено: 28 Марта, 2015 - 22:13:51
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. $rawPostData= file_get_contents('php://input');
  2. $xml = new SimpleXMLElement($rawPostData);


-----
То что программа работает, не означает что она написана правильно!
 
 Top
dimaxmaster
Отправлено: 28 Марта, 2015 - 22:42:29
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




KingStar пишет:
PHP:
скопировать код в буфер обмена

$rawPostData= file_get_contents('php://input');
$xml = new SimpleXMLElement($rawPostData);




попробовал, пишет такую ошибку:
'Exception' with message 'String could not be parsed as XML'
POST запрос создаю таким кодом:
PHP:
скопировать код в буфер обмена
  1.  
  2. $xml = " <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
  3.                         <Transfer action = \"search\">
  4.                                 <Unit value=\"111\" />
  5.                         </Transfer>";          
  6.         $ch = curl_init();
  7.  
  8.         // установка URL и других необходимых параметров
  9.         curl_setopt($ch, CURLOPT_URL, "http://test1.ru/test.php");
  10.         //curl_setopt($ch, CURLOPT_HEADER, 0);
  11.         curl_setopt($ch, CURLOPT_POST, 1);
  12.         curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  13.         // загрузка страницы и выдача её браузеру
  14.         curl_exec($ch);
  15.  
  16.         // завершение сеанса и освобождение ресурсов
  17.         curl_close($ch);
  18.  


что это за ошибка такая?

(Отредактировано автором: 28 Марта, 2015 - 22:43:29)

 
 Top
KingStar
Отправлено: 28 Марта, 2015 - 22:48:10
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Ts.Saltan
Отправлено: 28 Марта, 2015 - 22:53:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




Что вернёт код?


dimaxmaster пишет:
$xml = " <?xml

Ошибка может быть тут: перед <?xml лишний пробел
 
 Top
dimaxmaster
Отправлено: 28 Марта, 2015 - 22:56:18
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




KingStar пишет:
PHP:
скопировать код в буфер обмена

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));




PHP:
скопировать код в буфер обмена
  1.  
  2. $ch = curl_init();
  3.  
  4.         // установка URL и других необходимых параметров
  5.         curl_setopt($ch, CURLOPT_URL, "http://test1.ru/prvtv.php");
  6.         curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
  7.         curl_setopt($ch, CURLOPT_POST, 1);
  8.         curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  9.  


сделал, но все равно пишет ошибку:
'Exception' with message 'String could not be parsed as XML'

может я не правильно строку вставил эту:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
(Добавление)
Ts.Saltan пишет:
Ошибка может быть тут: перед <?xml лишний пробел


да, именно в этом ошибка, спасибо, все заработало)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB