PHP通过HTTP身份验证从远程URL获取XML

Dav*_*ill 4 php xml curl

我有一个提供xml输出的URL.它需要一个用户名和密码,我可以使用以下格式通过浏览器访问:

HTTP://用户名:password@url.com

但是,当我尝试通过php文件访问它时,我得到403禁止:

$url = "http://username:password@url.com";


$xml = @simplexml_load_file($url);
print_r($http_response_header);
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用curl并将用户代理设置为浏览器,但这仍然不会回显数据.

编辑:

我也尝试过使用pear的http请求2,这也禁止了403

Ham*_*mZa 5

你应该尝试这样的事情:

$url = "http://username:password@url.com";
$xml = file_get_contents($url);
$data = new SimpleXMLElement($xml);
Run Code Online (Sandbox Code Playgroud)


Raj*_*dra 5

对于具有基本身份验证 URL 的 XML,请尝试此操作

$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);
}
Run Code Online (Sandbox Code Playgroud)