PHP:无法打开流:HTTP请求失败

时间:2016-11-09 11:24:19

标签: php rest api

我有下面的脚本,并想知道为什么我收到错误:

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;
    ?>

有什么想法吗?

1 个答案:

答案 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');
}