2016-11-09 67 views
0

我有下面的腳本,想知道爲什麼我收到錯誤:PHP:未能打開流:HTTP請求失敗

failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required 

Base64編碼值的格式爲username:password和是正確的。 API文檔給的例子爲:

Authorization: Basic 
QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

例如,如果用戶代理使用阿拉丁作爲用戶名和芝麻開門作爲密碼,則該字段被形成爲上面在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

什麼是你想連接?它應該留在本地主機上嗎? – Hespen

回答

1

經過測試,您的代碼有效。我認爲它是服務器。 ATLEAST再次檢查服務器的用戶名和密碼(你的base64編碼是正確的)

我測試了:IIS 7.5的網站有基本身份驗證設置(HTTP 401挑戰賽) (IIS上這意味着我可以用我的Windows服務器憑據)

將$ http_response_headers添加到您的錯誤行以獲取更多信息。

// Check for errors 
if($response === FALSE){ 
    var_dump($http_response_header); 
    die('Error'); 
} 
+0

將\ r \ n添加到最後,因爲之前的評論建議由於某種原因將其固定 – pee2pee

相關問題