2010-08-25 51 views
1

我想使用file_get_contents.I已确保在php.ini中启用了allow_url_fopen。截至目前它告诉我:文件获取内容未能打开流未授权

[function.file-get-contents]:无法打开流:HTTP请求失败! HTTP/1.1 401未授权

我在做的是以下,我可以通过浏览器访问没有问题。

$url=('http://site/@api/users/[email protected]/properties'); 
$xmlString=file_get_contents($url); 

我认为这是一个身份验证问题,但不知道如何从脚本本身提供适当的凭据。任何想法将不胜感激。

+0

如果没有任何身份验证,这听起来像服务器检测到您是远程脚本,或者可能阻止IP。 – 2010-08-25 14:03:33

+0

@Pekka:这是'403 Forbidden',而不是'401 Unauthorized'。 '401未经授权'是专门用于认证可能但尚未提供或尚未提供的情况。 (来自[Wikipedia](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)) – Frxstrem 2010-08-25 14:15:45

+0

@Frxstrem真实,好点! – 2010-08-25 14:17:59

回答

8

在您的网址重:

http://user:[email protected]/ 

(附加任何网址为您的API的其余部分应该是)

+0

这工作马上!我非常感谢帮助。 – Aaron 2010-08-25 14:27:04

+0

我收到sprintf的警告,说有太少的参数。任何机会,你会知道什么是错的?不知道是否需要在此处创建新帖子。 – Aaron 2010-08-25 14:28:59

+0

@Aaron:创建一个新帖子并发布有问题的代码 – Cfreak 2010-08-25 16:13:58

4

只要把用户信息到URL:

$url = 'http://user:[email protected]/foo/bar/whatever'; 
+0

这类网址对我来说似乎不起作用。我已经在Chrome中尝试过他们,他们最终在Google上搜索,而不是尝试查找地址。任何想法如何解决这个问题? – 2014-01-10 21:25:54

3

401 Unauthorized状态码表示您应该进行身份验证,但您没有进行身份验证,或者您使用错误的凭据进行身份验证。当使用HTTP身份验证(HTTP身份验证内置于HTTP协议中)时,它最为常用,因此它是通用的,不仅适用于HTML文档,也适用于通过HTTP协议传输的任何内容。

要使用HTTP身份验证进行身份验证,只需在URL中的主机名之前添加username:[email protected]。例如:

http://foobar:[email protected]/passwordprotected/

这将与用户名foobar和密码mysupersecretpassword请求example.com/passwordprotected/目录。

它没有比这更糟糕。 :)

相关问题