2017-02-20 81 views
0

我使用stream_context_create()而不是cURL來創建HTTP帖子。它可以工作,但是file_get_contents()會返回所有數據的單個字符串,而不是XML對象。我如何修改我的代碼,以便它返回一個XML對象,並且我可以單獨訪問這些值?PHP使用stream_context_create()返回XML

<?php 
$url = 'http://www.domain.com'; 
$data = array('name1' => 'data1', 'name2' => 'data2', 'name3' => 'data3'); 

$options = array(
    'http' => array(
     'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
     'method' => 'POST', 
     'content' => http_build_query($data) 
    ) 
); 

$context = stream_context_create($options); 

$result = file_get_contents($url, false, $context); 

var_dump($result); // data1data2data3 
?> 

這返回XML頁面:

<?php 
header('Content-type: text/xml'); 

$xml = '<result><name1>' . $_POST['data1'] . '</name1><name2>' . $_POST['data2'] . '</data2><name3>' . $_POST['data3'] . '</name3></result>'; 

echo $xml; 
?> 
+0

你能提供代碼返回的另一邊XML文件(在Chrome中,您可以通過預先通過view-source:頁面URL做)? –

+0

@michail_w嗨,我已經用返回XML的代碼更新了我的問題。 –

+0

很好的代碼示例。請添加一些有關您的環境(操作系統,開發工具)的信息。它可能有助於其他人重現/解決你的問題。 – ssimm

回答

1

我認爲你正在尋找這在的var_dump您的瀏覽器,而瀏覽器嘗試呈現標籤<result><name..>作爲標準的HTML。

請嘗試運行這段代碼,並檢查您的網頁的源

+0

就是這樣!謝謝Michail。然後,我使用simplexml_load_string()將XML字符串轉換爲XML對象,以便輕鬆訪問數據。 –