PHP - 标头授权请求

时间:2015-04-14 11:55:55

标签: php

我需要通过PHP从webservice获取数据,webservice使用一些标头授权和标题应如下所示:

POST /web/oauth/token HTTP/1.1
Host: www.web.com:8080
Authorization: Basic TOKEN
Accept: application/json
Cache-Control: no-cache
Postman-Token: 6e8d4551-d984-1a57-589d-25d5816a79b6
Content-Type: application/x-www-form-urlencoded

grant_type=pass&user=admin&pass=admin

我通过POSTMAN扩展程序对Chrome进行了测试,效果非常好! 我怎么试着把这样的东西添加到header()我无处可去,总是只下载空白的文件:(

header('Host: www.web.cz:8080');
header('Authorization: Basic TOKEN');
header('Accept: application/json');
header('Cache-Control: no-cache');
header('Postman-Token: 6e8d4551-d984-1a57-589d-25d5816a79b6');
header('Content-Type: application/x-www-form-urlencoded');
header('grant_type=password&username=admin&password=admin');

为什么它没有得到任何回复,尽管标题应该看起来一样?

1 个答案:

答案 0 :(得分:1)

要在请求中添加标题,您需要在请求中设置它们,header()函数会在您的响应中设置它们。

实施例

卷曲

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Host: example.com',
'Accept: application/json'
));

的file_get_contents

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
          "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);
$file = file_get_contents('http://www.example.com/', false, $context);

如果您使用其他方式发送请求,请查看文档。