我一直在互联网上试图找到解决我特定问题但没有运气的方法。
基本上我有一个我登录的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:passwordX@some-website.university.edu.au:8781/elements/v4.9/users/';
echo $url."<br />";
$xml = new SimpleXMLElement($url);
print_r($xml);
我不确定是否接近或者curl是否优于SimpleXMLElement(),或者是否一个或两个都不会工作。
我添加了一个截图,以显示网站上返回的内容。登录屏幕只是浏览器的默认屏幕。任何帮助都会很棒。谢谢!
答案 0 :(得分: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
答案 1 :(得分:0)
使用curl imo可能会更好: 您可以尝试使用curl进行身份验证:
$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);
}