2015-05-04 147 views
2

我試圖按照以下的說明發布:捲曲POST請求與餅乾授權

資源信息

HTTP方法:POST

內容類型:應用程序/ JSON

接受:應用/ JSON

Authe ntication

註釋:或者是必需的cookie或授權報頭。

曲奇:SESSION_ID = 108259418ff689fc

授權:基本WVdECUMScUZGGGBGOlhVODdGNXFkR253SA ==

示例請求

POST https://sandbox.domain.com/api/authenticationTokens

曲奇:SESSION_ID = cdf5b882667d24a2

什麼是「需要Cookie或授權標頭」。我不明白如何閱讀/解釋和實施「示例請求」。

這是我到目前爲止有:

$parameters = array(); 

    $curl = curl_init(); 
    $header = array("Accept: application/json", "Cookie: _SESSION_ID=cdf5b882667d24a2"); 
    curl_setopt($curl, CURLOPT_URL, "https://sandbox.domain.com/api/authenticationTokens"); 
    curl_setopt($curl, CURLOPT_POST, count($parameters)); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($parameters)); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    $response = curl_exec($curl); 
    curl_close($curl); 

回答

1

上面的例子是使用Cookie身份驗證。 Cookie在請求標題中發送。要使用你需要以某種方式獲得會話ID和替代品到代碼cookie認證。我猜你需要以某種方式之前打開一個會話,然後在cookie中使用該值,但是這似乎是一個奇怪的方式爲API認證。另外,我不確定前導下劃線是否是錯字。你可能想嘗試沒有下劃線,如果它不工作:

"Cookie: SESSION_ID=cdf5b882667d24a2" 

或者,如果你想使用HTTP認證,您需要提供用戶名和密碼做這樣的事情

curl_setopt($curl, CURLOPT_USERPWD, 'username:password'); 

如果你已經是一個值,它可能會走在password部分留下用戶名留空:

curl_setopt($curl, CURLOPT_USERPWD, ':WVdECUMScUZGGGBGOlhVODdGNXFkR253SA=='); 
+0

正在發送中的Cookie請求頭和我一樣不是使用CURLO上述不同PT_COOKIE和CURLOPT_COOKIEJAR?是的,領先的「_」是一個錯字。 – TimNguyenBSM

+0

作爲頭部手動發送它應該與發送'CURLOPT_COOKIE'相同,但如果我是你,我更願意使用'CURLOPT_COOKIE'。 'CURLOPT_COOKIEJAR'將Cookie保存到本地文件,'CURLOPT_COOKIEFILE'我認爲發送文件而不是解析文件並調用'CURLOPT_COOKIE'的內容。請參閱手冊:http://php.net/manual/en/function.curl-setopt.php – Mike