ivanovec
Новичок
Добрый день!
Нужно получить xml c сервера xml2.osmp.ru/xmlgate/xml.jsp
Отправка запросов на этот сервер осуществляется по http протоколу методом POST
В браузере есть сертификат для подключения к сайту http://agent.osmp.ru/
Этот сертификат я импортирую из IE.
Как видно в скриншоте, у этого сертификата есть ключ, но при экспорте ключ не запрашивается.
В итоге сертификат эскпортируется без ключа и в формате cer.
Затем этот сертификат я преобразовываю в формат pem т.к. говорят, что curl работает с pem.
Преобразовываю таким образом: C:\WebServers\usr\local\php5\extras\openssl\openssl.exe x509 -in 3.cer -inform d -out file.pem
В момент преобразования никаких действий от меня openssl не запрашивает. Предполагал, что openssl запросит пароль. Тем не менее, получаю выходной сертификат в формате pem.
В скрипте пишу:
function _GetAnswer($address, $xml){
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 180);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//Путь до сертификата
curl_setopt($ch, CURLOPT_SSLCERT, 'file.pem');
//Пароль сертификата
//curl_setopt($ch, CURLOPT_SSLCERTPASSWD,'');
$result=curl_exec($ch);
return $result;
}
//Вызовем функцию _GetAnswer(), сохранив XML-ответ в переменную:
//Код:
// Открываем xml файл
$xml = simplexml_load_file("GetActions.xml");
$answer=_GetAnswer("xml2.osmp.ru/xmlgate/xml.jsp", $xml);
echo $answer;
Результат скрипта, как видно из скрина, <?xml version="1.0" encoding="windows-1251"?><response result="202"/>, т.е. ошибка
Подскажите, пожалуйста, как мне все таки получить xml от сервера?
Нужно получить xml c сервера xml2.osmp.ru/xmlgate/xml.jsp
Отправка запросов на этот сервер осуществляется по http протоколу методом POST
В браузере есть сертификат для подключения к сайту http://agent.osmp.ru/
Этот сертификат я импортирую из IE.
Как видно в скриншоте, у этого сертификата есть ключ, но при экспорте ключ не запрашивается.
В итоге сертификат эскпортируется без ключа и в формате cer.
Затем этот сертификат я преобразовываю в формат pem т.к. говорят, что curl работает с pem.
Преобразовываю таким образом: C:\WebServers\usr\local\php5\extras\openssl\openssl.exe x509 -in 3.cer -inform d -out file.pem
В момент преобразования никаких действий от меня openssl не запрашивает. Предполагал, что openssl запросит пароль. Тем не менее, получаю выходной сертификат в формате pem.
В скрипте пишу:
function _GetAnswer($address, $xml){
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 180);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//Путь до сертификата
curl_setopt($ch, CURLOPT_SSLCERT, 'file.pem');
//Пароль сертификата
//curl_setopt($ch, CURLOPT_SSLCERTPASSWD,'');
$result=curl_exec($ch);
return $result;
}
//Вызовем функцию _GetAnswer(), сохранив XML-ответ в переменную:
//Код:
// Открываем xml файл
$xml = simplexml_load_file("GetActions.xml");
$answer=_GetAnswer("xml2.osmp.ru/xmlgate/xml.jsp", $xml);
echo $answer;
Результат скрипта, как видно из скрина, <?xml version="1.0" encoding="windows-1251"?><response result="202"/>, т.е. ошибка
Подскажите, пожалуйста, как мне все таки получить xml от сервера?
Вложения
-
17,3 KB Просмотры: 0
-
13,3 KB Просмотры: 1