我正在尝试执行一个curl命令,我可以在终端中成功执行但是它在PHP脚本中失败并出现以下错误:
HTTP / 1.1 401 Unauthorized Access-Control-Allow-Origin:* Access-Control-Request-Method:* Cache-Control:no-cache Content-Type:application / json; charset = utf-8日期:星期一,2012年2月6日00:38:56 GMT服务器:nginx / 1.0.4 Set-Cookie:_parse_session = XXXXXX;域= .parse.com;路径= /; expires = Sun,06-Feb-2022 00:38:56 GMT; HttpOnly状态:401未经授权的WWW-Authenticate:Basic realm =" Parse" X-Runtime:0.002486 X-UA兼容:IE = Edge,chrome = 1内容长度:24连接:保持活动{"错误":"未授权"}
这是在终端中执行成功执行的命令:
curl -H"接受:application / json" -H" X-Parse-Application-Id:XXXXXXX" -H" X-Parse-REST-API-Key:XXXXXXXXX" -X GET" https://api.parse.com/1/classes/XXXXXX"
这是PHP代码:
$fields = array('Accept: '=>'application/json',
'X-Parse-Application-Id:' => 'XXXXX',
'X-Parse-REST-API-Key:' => 'XXXXX');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.parse.com/1/classes/XXXX');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_HEADER, $fields);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, 'XXXXXX');
$result = curl_exec($ch);
curl_close($ch);
有趣的是,当在终端中执行时,不需要身份验证信息。
帮助将不胜感激。
由于
答案 0 :(得分:4)
您的标题字段在数组定义中不应该有:
:
'X-Parse-REST-API-Key:' => 'XXXXX');
^---remove these
这会使字段名称成为:
部分,因此您实际上是在发送:
X-Parse-REST-API-Key:: XXXXX
^^---note the doubled colons
答案 1 :(得分:0)
您的标头是使用CURLOPT_HTTPHEADER设置的,而不是CURLOPT_HEADER,它需要一个布尔值