基本上,我被指派用PHP构建一个REST请求应用程序,使用第三方REST API。做POST、GET等看起来很简单,但是它们有一个叫做Authorization header的东西,它使用了一个Digest令牌。如何通过get传递?
例如:
$url = "http:/domain/core.xml";
$response = file_get_contents($url);
echo $response;返回:未找到摘要身份验证头
在FireFoxes POSTER中,我只需添加标题"Authorization“和值”Digest0:codehere“,它就可以工作了。
发布于 2011-05-19 20:20:52
请参阅file_get_contents()
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )第三个参数$context允许您添加由stream_context_create()创建的上下文。参见HTTP context options。在那里,您可以找到一个选项header,它允许您设置要由您发送的请求使用的标头,在本例中为Authorization-header
发布于 2011-05-19 20:21:29
您可以使用curl进行Rest调用。对于您的帮助,这些是帮助链接:auth token using curl
What is Curl
发布于 2011-12-15 16:36:21
<?php
$url ="http://example.com/target.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD,'username:password');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>在服务器端(target.php),我们可以访问用户名和密码,如下所示。
$USERNAME = $_SERVER['PHP_AUTH_USER'];
$PASSWORD = $_SERVER['PHP_AUTH_PW'];在某些情况下,$_SERVER变量对您的本地服务器不可用。所以请将以下代码放入您的HTACCESS中。HTTP授权模块将在PHP中工作。原因是我们必须将其作为单独的模块进行安装
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>https://stackoverflow.com/questions/6058457
复制相似问题