2012-05-21 3 views
0

Что мне нужно делать на странице сервера и как получить этот xml-файл? Я застрял. xml в порядке, он проверяется с помощью simplexml_load_string.как получить этот локон?

$var='caca'; 
$login_xml ='<xml>'. 
     '<action>log_in</action>'. 
    '<parameters>'. 
     '<username>'.$var.'</username>'. 
    '<pass>abdef01</pass>'. 
    '</parameters>'. 
    '</xml>'; 

$URL = "http://myurl.com/login.php/"; 


$ch = curl_init($URL); 
curl_setopt($ch, CURLOPT_MUTE, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "$login_xml"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 

Благодарим за ваше время.

+0

Я удалил свой ответ, потому что он неверен. –

+0

У вас должно быть имя переменной для входа xml .. вы не можете просто отправить xml. Вы хотите сказать «PUT»? –

ответ

2

Поскольку данные отправляются как текст/xml, а не как данные формы с кодировкой url, вы не можете использовать $ _POST. Вы должны прочитать необработанный запрос из потока ввода php: //

$xml = file_get_contents('php://input'); 
+0

похоже, что они работают, некоторые форматирования я должен сделать, спасибо, извините за дубли –

0

У Вас есть ошибка в вашем CURLOPT_POST_FIELDS: Этот параметр должен быть массивом:

... 
$data = array('xml' => $login_xml); 
... 

И потом:

... 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
... 

Это посылает значение 'XML' в качестве почтового поля;

Надеюсь, это поможет.

+0

Когда я печатаю_r ($ _ POST) на скрипте сервера, я все равно получаю пустой массив. Но спасибо за вашу помощь. Улучшение инкрементно :) –

Смежные вопросы