2011-05-19 84 views
6

基本上我已经被分配使用第三方REST API在PHP中构建REST请求应用程序。做POST,GET等似乎很简单,但是他们有一些称为授权标题的使用摘要令牌。我如何通过get来传递它?REST API新手

EG:

$url = "http:/domain/core.xml"; 
$response = file_get_contents($url); 
echo $response; 

返回:摘要身份验证头没有找到

在FireFoxes海报,我会简单地用增值的标题 “授权”, “精华0:codehere” 和它的作品。

回答

9

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-标题

+0

辉煌,工作很好,非常感谢! – rickyduck 2011-05-19 12:47:25

5

你可以使用curl作为休息调用。对于你的帮助这些是帮助链接: auth token using curl

What is Curl

+0

谢谢,可能会使用卷曲,所以这将有所帮助 – rickyduck 2011-05-19 17:08:36

3
<?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 VARIABLES不适用于您的本地服务器。所以请放入 您的HTACCESS中的以下代码。 HTTP授权模块将在PHP中运行。原因是我们必须安装此为单独模块

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 
</IfModule>