Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Basecamp API中的cURL“;把「;_Php_Api_Curl_Basecamp - Fatal编程技术网

PHP Basecamp API中的cURL“;把「;

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

我正试图通过新的网站编辑一个现有的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_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 put
curl\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 put
curl\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。