Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > curl xml запрос методом POST


Автор: NewIvanovec 28.2.2011, 22:00
Нужно от сервера ОСМП получить xml.
ОСМП - это объединенная система моментальных платежей

Чтобы получить xml нужно отправить xml методом POST.
Решаю задачу так:
Код

<?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 файл составляю по аналогии с файлом в документации (прикреплен к теме)


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


Т.к. от сервера приходит сообщение [quote автор]Ошибка параметров запроса - возможно в формате протокола[/quote],
то хотелось бы для проверки отправить xml файл другим способом, через сокеты.
Подскажите пожалуйста, как бы выглядел запрос через сокеты?

Автор: NewIvanovec 28.2.2011, 22:02
Прикрепляю вид xml файла из документации по ОСМП:

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)