我有下面的脚本,并想知道为什么我收到错误:
failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required
base64编码的值采用username:password
形式且正确无误。 API文档将示例作为:
Authorization: Basic
QWxhZGRpbjpvcGVuIHNlc2FtZQ==
例如,如果用户代理使用Aladdin作为用户名并打开芝麻作为密码,则该字段在HTTP标头中形成如上所述
<?php
$postData = array(
'primaryContact' => array('id' => 1),
'subject' => 'Something not working'
);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=\r\nContent-Type: application/json",
'content' => json_encode($postData)
)
));
// Send the request
$response = file_get_contents('http://127.0.0.1/', FALSE, $context);
// Check for errors
if($response === FALSE){
die('Error');
}
// Decode the response
$responseData = json_decode($response, TRUE);
// Print the date from the response
echo $responseData;
?>
有什么想法吗?
答案 0 :(得分:1)
经过测试,您的代码可以使用。我认为它是服务器。至少再次检查服务器用户名和密码(你的base64代码是正确的)
我测试过:iis 7.5网站有基本的身份验证设置(http 401挑战) (在iis上,这意味着我可以使用我的Windows服务器凭据)
将$ http_response_headers添加到错误行以获取更多信息。
// Check for errors
if($response === FALSE){
var_dump($http_response_header);
die('Error');
}