powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / cur, xml запрос
11 сообщений из 11, страница 1 из 1
cur, xml запрос
    #37140513
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно от сервера ОСМП получить xml.
Чтобы получить xml нужно отправить xml методом POST.
Решаю задачу так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?php

    function  GetAnswer($address, $xml){ 
     $ch =  curl_init ($address);      
      curl_setopt ($ch, CURLOPT_HEADER,  0 );  
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1 ); 
      curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,  80 );
      curl_setopt ($ch, CURLOPT_POST, true );  
      curl_setopt ($ch, CURLOPT_POSTFIELDS, $xml); 	 
     $result= curl_exec ($ch); 
      return  $result; 
   } 

//Вызовем функцию GetAnswer(), сохранив XML-ответ в переменную: 
//Код:
    // Открываем xml файл  
    $xml =  simplexml_load_file ("GetActions8.xml");    
    $answer=GetAnswer("http://xml2.osmp.ru/xmlgate/xml.jsp", $xml);
     
?>

Xml файл выглядит так:

<?xml version="1.0" encoding="windows-1251"?>
<request>
<auth login="*****" sign="*****" signAlg="MD5"/>
<client terminal="*****" software="Dealer v0" serial="*****"/>
<system>
<getActions/>
</system>
</request>

Хотя отправляю xml методом POST просмотр hhtp заголовков показывает, что запрос идет как GET.
Почему?
Можно ли xml файл отправлять таким образом: curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); ?

Т.к. от сервера приходит сообщение авторОшибка параметров запроса - возможно в формате протокола,
то хотелось бы для проверки отправить xml файл другим способом, через сокеты.
Подскажите пожалуйста, как бы выглядел запрос через сокеты?
...
Рейтинг: 0 / 0
cur, xml запрос
    #37140521
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне на GET он ответил так:

авторUse method="post"! Version: 2.7.10.20110218230102
Uptime: 201 min

А вам почему-то по другому.
...
Рейтинг: 0 / 0
cur, xml запрос
    #37140528
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если отсылаю постом вашу XML, то сервер отвечает:

Код: plaintext
<?xml version="1.0" encoding="windows-1251"?><response result="202"/>
...
Рейтинг: 0 / 0
cur, xml запрос
    #37140531
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И зачем там simplexml_load_file ?
...
Рейтинг: 0 / 0
cur, xml запрос
    #37140833
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HettА если отсылаю постом вашу XML, то сервер отвечает:

Код: plaintext
<?xml version="1.0" encoding="windows-1251"?><response result="202"/>


Мне тоже так отвечает, когда xml отправляю.
В доках по этому сервису сказано, что этоавторОшибка параметров запроса - возможно в формате протокола

Если в браузере ввожу http://xml2.osmp.ru/xmlgate/xml.jsp, то тоже получаю ответ авторUse method="post"! Version: 2.7.10.20110218230102
Uptime: 201 min

Из этого можно сделать вывод, что curl всё-таки отправляет запрос методом POST .

авторИ зачем там simplexml_load_file
Hett, сам не понимаю зачем:)
Заменил на
Код: plaintext
$xml =  file_get_contents ("GetActions8.xml");
и получил другой ответ от сервера!

Спасибо тебе Огромное!
2 дня никак не мог другой ответ от сервера получить!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
cur, xml запрос
    #38443968
NovikovAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NewIvanovec,

Добрый день!
Тоже бьюсь с подобной задачей. Надо отправить xml файл методом POST и получить ответ.
Для проверки отправил POST-запрос из HTTPAnalyzer и удачно получил ответ.
Но процедура, подобная Вашей, и скопированная из этой темы дает отрицательный результат и видится Аналайзеру как GET запрос.
Это глюк Аналайзера? А почему нифига не работает?

Вот xml:
<?xml version="1.0" encoding="UTF-8" ?>
<message>
<param>
<action>price</action>
<login>novikovam</login>
<password>ччччч</password>
<code>kl2</code>
<sm>1</sm>
</param>
</message>

Вот листинг:
<?php

function postrq($address, $xml){
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 80);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$result=curl_exec($ch);
return $result;
}



$xml = file_get_contents("1.xml");
$dta=postrq(" http://adeo.pro/pricedetals2.php ", $xml);
echo $dta;

?>

Вот ответ сервера:
Некорретный вызов: Не данных авторизации: Array ( [ "1.0" encoding="UTF-8" ?> price novikovam xxxxx kl2 1 [login] => [password] => [action] => [date_from] => [date_to] => [order] => [comment] => [art] => [code] => [sm] => [brand] => [cella_id] => )

Буду очень благодарен за помощь!
...
Рейтинг: 0 / 0
cur, xml запрос
    #38443977
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CURLOPT_POSTFIELDS => http_build_query($post)
...
Рейтинг: 0 / 0
cur, xml запрос
    #38443992
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно как массив передать
...
Рейтинг: 0 / 0
cur, xml запрос
    #38444018
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это никак не связано?NovikovAMНе данных авторизации
...
Рейтинг: 0 / 0
cur, xml запрос
    #38444527
NovikovAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И в первых строках своего письма хочу выразить благодарность откликнувшимся)
т.к. на предыдущих форумах не подсказали вообще ничего... Нет, понятно, что у меня кривые руки, но зачем впаривать скрипт за деньги, если я сам хочу разобраться)

ScareCrowCURLOPT_POSTFIELDS => http_build_query($post)
Попробовал подставить

function postrq($address, $xml){
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 80);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($xml));
$result=curl_exec($ch);
return $result;
}

но снова ничего не вышло. Ответ изменился. Пропал заголовок хмл:
Некорретный вызов: Не данных авторизации: Array ( [login] => [password] => [action] => [date_from] => [date_to] => [order] => [comment] => [art] => [code] => [sm] => [brand] => [cella_id] => )

Hettможно как массив передать

Пробовал отправить как массив, ничего не вышло. Но в массиве не отправлял первую строку хмл, где версия указывается.

vkleА это никак не связано?NovikovAMНе данных авторизации

Это связано только с тем, что данные из хмл (логин и пароль) не передается серверу.
Валидный логин и пароль есть. И если кто-то хочет тестануть, могу кинуть в личку.

Блин, ну работает же через POST запрос HTTPAnalyser... ХХХЭЭЭЭЭЭЛЛЛЛППППП!
...
Рейтинг: 0 / 0
cur, xml запрос
    #38449822
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в инит не передавать url


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$ch = curl_init();

$xmldata_out  = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$xmldata_out .= "<T></T>";

curl_setopt($ch, CURLOPT_HEADER, true); // Display headers
curl_setopt($ch, CURLOPT_VERBOSE, true); // Display communication with server

curl_setopt($ch, CURLOPT_URL,           $c_url);

curl_setopt($ch, CURLOPT_POST,          1);
curl_setopt($ch, CURLOPT_POSTFIELDS,    $xmldata_out);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT,       10);

// выполняем запрос
$data = curl_exec($ch);
curl_close($ch);
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / cur, xml запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]