PHP Basecamp API中的cURL“;把「;
我正试图通过新的网站编辑一个现有的Basecamp项目。我收到这个错误:PHP Basecamp API中的cURL“;把「;,php,api,curl,basecamp,Php,Api,Curl,Basecamp,我正试图通过新的网站编辑一个现有的Basecamp项目。我收到这个错误: lexical error: malformed number, a digit is required after the minus sign. --------------- ---------------6 (right here) ------^ 我的代码: $ch = curl_init(); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_s
lexical error: malformed number, a digit is required after the minus sign. --------------- ---------------6 (right here) ------^
我的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL, 'https://basecamp.com/****/api/v1/projects/****.json');
curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent : Holy Grail (user@example.com)");
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, array("name" => "from cURL"));
$result = curl_exec($ch);
echo $result;
curl_close($ch);
if ($result == false) {
echo "Fetch failed" ;
}
else {
$obj = json_decode($result, true);
}
//var_dump($obj);
?>
我肯定我只是在做一些愚蠢的事情,但任何帮助都是非常感谢的
谢谢
更新
我现在所拥有的:
$username = 'user';
$password = 'pass';
$data = json_encode(array("name" => "from cURL"));
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL, 'https://basecamp.com/****/api/v1/projects/*****.json');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent : Holy Grail (user@example.com)');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type :application/json',
'Content-Length: ' .strlen($data)));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
echo $result;
curl_close($ch);
if ($result == false) {
echo "Fetch failed" ;
}
else {
$obj = json_decode($result, true);
}
//var_dump($obj);
?>
</body>
</html>
$username='user';
$password='pass';
$data=json_编码(数组(“name”=>“from cURL”);
$ch=curl_init();
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch,CURLOPT_URL,'https://basecamp.com/****/api/v1/projects/*****.json');
curl_setopt($ch,CURLOPT_超时,10);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERPWD,“$username:$password”);
curl_setopt($ch,CURLOPT_头,1);
curl_setopt($ch,CURLOPT_PUT,1);
curl_setopt($ch,CURLOPT_USERAGENT,'用户代理:圣杯(user@example.com)');
curl_setopt($ch,CURLOPT_HTTPHEADER,数组(
'内容类型:application/json',
'内容长度:'.strlen($data));
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
$result=curl\u exec($ch);
回声$结果;
卷曲关闭($ch);
如果($result==false){
回显“提取失败”;
}
否则{
$obj=json_decode($result,true);
}
//var_dump($obj);
?>
BasecampAPI只接受JSON数据,您可以在-d
参数-
curl -u username:password \
-H 'Content-Type: application/json' \
-H 'User-Agent: MyApp (yourname@example.com)' \
-d '{ "name": "My new project!" }' \
https://basecamp.com/999999999/api/v1/projects.json
所以您没有在这行中发送JSON数据-
curl_setopt($ch, CURLOPT_POSTFIELDS, array("name" => "from cURL"));
删除CUSTOMREQUEST
选项并添加CURLOPT\u PUT
。将代码修改为-
$data_string = json_encode(array("name" => "from cURL"));
...
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_PUT, True);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
BasecampAPI只接受JSON数据,您可以在
-d
参数-
curl -u username:password \
-H 'Content-Type: application/json' \
-H 'User-Agent: MyApp (yourname@example.com)' \
-d '{ "name": "My new project!" }' \
https://basecamp.com/999999999/api/v1/projects.json
所以您没有在这行中发送JSON数据-
curl_setopt($ch, CURLOPT_POSTFIELDS, array("name" => "from cURL"));
删除CUSTOMREQUEST
选项并添加CURLOPT\u PUT
。将代码修改为-
$data_string = json_encode(array("name" => "from cURL"));
...
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_PUT, True);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
我现在得到一个
403禁止
。我不明白为什么。我正在使用帐户持有人的登录详细信息。我知道用户和pass拥有请求的权限try putcurl\u setopt($ch,CURLOPT\u RETURNTRANSFER,true)代码>在CURLOPT_USERPWD
行之前。同时将CURLOPT_标题添加到True
中。检查答案,我添加了更多信息。我更幸运地保留了CURLOPT_CUSTOMREQUEST,“PUT”
而不是CURLOPT_PUT,True
。对于CURLOPT\u PUT
,PHP处理文件流等,而对于CURLOPT\u CUSTOMREQUEST
则使用CURLOPT\u POSTFIELDS
。YMMV.我现在得到了一个403禁止
。我不明白为什么。我正在使用帐户持有人的登录详细信息。我知道用户和pass拥有请求的权限try putcurl\u setopt($ch,CURLOPT\u RETURNTRANSFER,true)代码>在CURLOPT_USERPWD
行之前。同时将CURLOPT_标题添加到True
中。检查答案,我添加了更多信息。我更幸运地保留了CURLOPT_CUSTOMREQUEST,“PUT”
而不是CURLOPT_PUT,True
。对于CURLOPT\u PUT
,PHP处理文件流等,而对于CURLOPT\u CUSTOMREQUEST
则使用CURLOPT\u POSTFIELDS
。YMMV。