2
我已經能夠使用高級Rest Rest Client Extension for chrome將POST查詢發送到特定的HTTPS服務器,並且獲得狀態碼:200 - 確定與我在這段代碼中使用的字段相同,但是當我運行下面的代碼時,我得到這個響應:403 - 訪問被拒絕。在PHP中使用cURL和x-www-form-urlencoded進行POST返回拒絕訪問
<?php
$postData = array(
'type' => 'credentials',
'id' => 'exampleid',
'secret_key' => 'gsdDe32dKa'
);
// Setup cURL
$ch = curl_init('https://www.mywebsite.com/oauth/token');
curl_setopt_array($ch, array(
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded'
),
CURLOPT_POSTFIELDS => json_encode($postData)
));
// Send the request
$response = curl_exec($ch);
var_dump($response);
// Check for errors
if($response === FALSE){
die(curl_error($ch));
}
// Decode the response
$responseData = json_decode($response, TRUE);
// Print the date from the response
echo $responseData['published'];
?>
我注意到還有,當我使用高級REST客戶端Chrome擴展程序,如果我設置的內容類型爲application/JSON我必須輸入用戶名和我不知道密碼那是因爲即使我輸入了代碼中的id和密鑰,它也會返回401 Unauthorized。所以我猜這個我寫的代碼並不是強制它的內容類型:application/x-www-form-urlencoded,但我不確定。謝謝你對這個問題的任何幫助!
我只是想知道爲什麼你改變'我的代碼'json_encode($ postData)'爲'http_build_query()'。順便說一句,我試圖使用CURLOPT_USERPWD,但我得到了同樣的錯誤。我想知道哪兩個用表單格式的json_encode或http_build_query發送值?感謝您的幫助 – VaTo 2014-11-06 18:30:29
好吧 - 試試我的代碼,並告訴我結果 – 2014-11-07 03:33:01
非常感謝,像'json_encode'這樣的東西在我的情況下工作得更糟! – 2017-05-25 09:23:21