提问人:Andrew G. Johnson 提问时间:6/11/2009 更新时间:6/11/2009 访问量:1377
如何在PHP中访问密码投影的RESTful API(我知道密码)
How can I access a RESTful API in PHP that is password projected (I know the password)
问:
例如,这里有一个 URL:https://rexms.net:32005/rexwapi/common/timeframes -- 如果我在浏览器中访问该 URL,输入正确的用户名/密码,它会向我吐出 XML。问题是我需要通过PHP访问它,所以我显然没有得到输入用户名/密码的提示。
当前代码为:
$timeframes_xml = simplexml_load_file(file_get_contents('https://rexms.net:32005/rexwapi/common/timeframes'));
答:
6赞
David Snabel-Caunt
6/11/2009
#1
我认为你可以简单地使用
https://username:[email protected]:32005/rexwapi/common/timeframes
评论
0赞
Andrew G. Johnson
6/11/2009
这似乎并不一致。我在PHP中做了,但它没有返回结果,当我在MSIE buuuut中尝试时,当我在Google Chrome中尝试时,它确实有效,关于可能导致这种情况的任何想法?
1赞
David Snabel-Caunt
6/11/2009
IE禁用了它,因为它的实现存在安全漏洞。PHP 解析数据并根据需要进行设置:)
4赞
CoderDennis
6/11/2009
#2
您需要将 curl 与 curl_setopt 一起使用来设置选项。CURLOPT_USERPWD
评论
0赞
Andrew G. Johnson
6/11/2009
我已经尝试了几种方法,但似乎没有得到结果,有没有人可以编写代码示例?
1赞
Jim Walker
6/11/2009
#3
最好使用三个 PEAR 包来解决此问题:HTTP/Socket/Net。使用 HTTP 包,您可以轻松地向基本身份验证领域发出 REST 请求。
有关更多信息,请查看:如何:使PHP REST客户端调用REST资源
2赞
Darrel Miller
6/11/2009
#4
您需要设置 Http 标头 Authorization。将值设置为 base64 编码版本
Basic username:password
也就是说,假设服务器使用基本身份验证。在 Windows 上,可以使用 Fiddler 查看服务器请求的身份验证类型。
0赞
Andrew G. Johnson
6/11/2009
#5
在另一个 SO 问题中找到了我的答案
function get_rex_xml($url)
{
$curl = curl_init($url);
curl_setopt_array($curl, array(CURLOPT_RETURNTRANSFER => TRUE,CURLOPT_USERPWD => 'username:password'));
ob_start();
$response_xml = curl_exec($curl);
ob_end_clean();
curl_close($curl);
return $response_xml;
}
header('content-type:text/xml');
echo get_rex_xml('https://rexms.net:32005/rexwapi/common/timeframes');
评论