我希望通过以下网址获取受密码保护的xml文件:
account@domain.com:password@domain2.com/file.xml
我发现在网址浏览器版本中工作(只需输入浏览器,xml显示没有重定向或密码提示)的网址:
account%40domain.com:password@domain2.com/file.xml
所以我尝试将这个url与simple_load_file()和file_get_contents()一起使用,但它不起作用(我知道这个函数需要urlencode,因为url中的特殊字符,但account%40domain.com:password%40domain2.com/file.xml
不起作用)。
所以我尝试在stackoverlow上找到另一个解决方案:
$username = 'account@domain.com';
$password = 'password';
$context = stream_context_create(array(
'http' => array(
'header' => "Authorization: Basic " . base64_encode("$username:$password")
)
));
$data = file_get_contents('domain2.com/file.xml', false, $context);
我得到错误:
...failed to open stream: No such file or directory in...
我也尝试卷曲,也没有成功(返回代码302)。我没有想法解决这个问题。有人可以帮帮我吗?
答案 0 :(得分:1)
file_get_contents
会自动跟踪重定向(例如302),但您需要通过提供方案告诉它您正在获取远程文件。变化
$data = file_get_contents('domain2.com/file.xml', false, $context);
到
$data = file_get_contents('http://domain2.com/file.xml', false, $context);
(或 https:// ,如果适用)
如果您不提供该方案,它将尝试在本地计算机上打开一个文件 - 即目录file.xml
下的domain2.com
文件