例如,这里有一个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'));
答案 0 :(得分:6)
我认为你可以简单地使用
https://username:password@rexms.net:32005/rexwapi/common/timeframes
答案 1 :(得分:4)
您需要使用curl与curl_setopt一起设置CURLOPT_USERPWD
选项。
答案 2 :(得分:2)
您需要设置Http标头授权。将值设置为base64编码版本的
Basic username:password
假设服务器正在使用基本身份验证。在Windows上,您可以使用Fiddler查看服务器请求的auth类型。
答案 3 :(得分:1)
最好使用三个PEAR包来解决这个问题:HTTP / Socket / Net。使用HTTP包,您可以轻松地向Basic Auth领域发出REST请求。
如需更多结帐:How To: Making a PHP REST client to call REST resources
答案 4 :(得分:0)
找到我的答案in another SO question
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');