2017-04-21 21 views
1

我一直在互聯網上試圖找到解決我的具體問題,但沒有運氣。通過身份驗證從URL中檢索XML

基本上我有我登錄,看起來類似這樣的URL: https://some-website.university.edu.au:8781/elements/v4.9/users/

將返回到瀏覽器文本的XML塊的所有用戶。

我期待使用curl或SimpleXMLElement()或任何它將該XML帶入我的php變量並輸出它。

我覺得我已經得到的最接近的是:

$username = 'usernameX'; 
$password = 'passwordX'; 
$URL = 'https://some-website.university.edu.au:8781/elements/v4.9/users/'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$URL); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_USERPWD, $username.":".$password); 
$result=curl_exec ($ch); 
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code 

echo $result; 

$url = 'https://usernameX:[email protected]:8781/elements/v4.9/users/'; 
echo $url."<br />"; 
$xml = new SimpleXMLElement($url); 
print_r($xml); 

我不知道如果任一接近或捲曲是否比的SimpleXMLElement(更好),或者如果一個或兩者都無法工作。

我添加了截圖以顯示網站上返回的內容。登錄屏幕只是瀏覽器默認的一個。任何幫助將是驚人的。謝謝!

XML Returned on web page

+0

你能在你想要做什麼擴展?這些代碼中的任何一個都會導致您正在查找的輸出? – miken32

回答

0

你可能會更好使用curl IMO: 你可以嘗試這樣的事情進行身份驗證,捲曲:

$username = 'admin'; 
$password = 'mypass'; 
$server = 'myserver.com'; 

$context = stream_context_create(array(
     'http' => array(
      'header' => "Authorization: Basic " . base64_encode("$username:$password") 
     ) 
    ) 
); 
$data = file_get_contents("http://$server/", false, $context); 
$xml=simplexml_load_string($data); 
if ($xml === false) { 
    echo "Failed loading XML: "; 
    foreach(libxml_get_errors() as $error) { 
     echo "<br>", $error->message; 
    } 
} else { 
    print_r($xml); 
} 
0

另一種方式從遠程URL解析XML。 (未測試)

<?php 

$username = 'usernameX'; 
$password = 'passwordX'; 
$url = 'https://some-website.university.edu.au:8781/elements/v4.9/users/'; 

$context = stream_context_create(array(
    'http' => array(
     'header' => "Authorization: Basic " . base64_encode("$username:$password"), 
     'header' => 'Accept: application/xml' 
    ) 
)); 

$data = file_get_contents($url, false, $context); 
$xml = simplexml_load_string($data); 
print_r($xml); 

PHP

+0

感謝您的幫助,但上面的代碼似乎不起作用。它會在那裏停留一分鐘左右,然後什麼都不返回。沒有控制檯錯誤。我認爲我正在嘗試做的事很常見,很多人都會有建議:S THanks –

+0

SOrry php錯誤日誌說:PHP警告:file_get_contents(https://some-website.university.edu.au:8781/elements/ v4.9/users /):無法打開流:HTTP請求失敗!在第15行的/Users/me/Documents/index.php中,第15行是:$ data = file_get_contents($ url,false,$ context); –