如何在PHP中访问密码投射的RESTful API(我知道密码)

时间:2009-06-11 15:09:40

标签: php rest

例如,这里有一个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'));

5 个答案:

答案 0 :(得分:6)

我认为你可以简单地使用

https://username:password@rexms.net:32005/rexwapi/common/timeframes

答案 1 :(得分:4)

您需要使用curlcurl_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');