2012-05-21 47 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。你的意思是「放」嗎? –

回答

2

由於數據是以text/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

當我在服務器腳本上print_r($ _ POST)時,我仍然得到一個空數組。但是,謝謝你的幫助。漸進式改進:) –