2015-05-04 149 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