duanlin1931
2017-10-12 21:04
浏览 217
已采纳

PHP file_get_contents提供HTTP代码401 Unauthorized

I try to make an authenticated HTTP GET request but I get a 401 HTTP error. I am sure that the signature is right. Because of that, I think the problem is in the multiple headers on line 18. But I can't find the exact problem unfortunately.

Warning: file_get_contents(http://test.com/path): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in /home/host/path.php on line 22

<?php
$apiKey = '1';
$apiSecret = '2';

$verb = 'GET';

$path = '/path';
$nonce = '1';
$data = '';

$signature = hash_hmac('sha256', $verb . $path . $nonce . $data, $apiSecret);

$url="http://test.com/path"; 

$opts = [
    "http" => [
        "method" => $verb,
        "header" => "api-nonce: ".$nonce. "
", "api-key: " .$apiKey. "
", "api-signature: " . $signature
    ]
];
$context = stream_context_create($opts);
$json = file_get_contents($url, false, $context);

if($json){
    $data = @json_decode($json, TRUE);

    print_r($data);
}
?>

图片转代码服务由CSDN问答提供 功能建议

我尝试进行经过身份验证的HTTP GET请求,但收到401 HTTP错误。 我确信签名是正确的。 因此,我认为问题出在第18行的多个标题中。但遗憾的是我无法找到确切的问题。

警告:file_get_contents( http://test.com/path ):无法打开流:HTTP请求失败! 第22行/home/host/path.php中的HTTP / 1.1 401未授权

 &lt;?php 
 $ apiKey ='1';  
 $ apiSecret ='2'; 
 
 $ verb ='GET'; 
 
 $ path ='/ path'; 
 $ nonce ='1'; 
 $ data =''; \  n 
 $ signature = hash_hmac('sha256',$ verb。$ path。$ nonce。$ data,$ apiSecret); 
 
 $ url =“http://test.com/path”;  
 
 $ opts = [
“http”=&gt;  [
“method”=&gt;  $ verb,
“header”=&gt;  “api-nonce:”。$ nonce。  “
 
”,“api-key:”。$ apiKey。  “
 
”,“api-signature:”。  $ signature 
] 
]; 
 $ context = stream_context_create($ opts); 
 $ json = file_get_contents($ url,false,$ context); 
 
if($ json){
 $ data =  @json_decode($ json,TRUE); 
 
 print_r($ data); 
} 
?&gt; 
   
 
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题