命令行cURL到PHP cURL
我在将命令行cURL转换为php cURL时遇到问题。我已经阅读了关于这个主题的其他链接,但仍然卡住了,如果有任何帮助,我将不胜感激 我正在尝试自动将网络表单中的联系人信息放入在线CRM API信息: 我的代码:命令行cURL到PHP cURL,php,curl,Php,Curl,我在将命令行cURL转换为php cURL时遇到问题。我已经阅读了关于这个主题的其他链接,但仍然卡住了,如果有任何帮助,我将不胜感激 我正在尝试自动将网络表单中的联系人信息放入在线CRM API信息: 我的代码: $header = array('contact[first_name]=aaaaaaa','API-KEY: XXXXXXXXX'); $pageurl = "https://app.karmacrm.com/api/v2/contacts.json"; $ch = curl_ini
$header = array('contact[first_name]=aaaaaaa','API-KEY: XXXXXXXXX');
$pageurl = "https://app.karmacrm.com/api/v2/contacts.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $pageurl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERPWD, 'mXXXX@gmail.com:7iNXXXXXXXXXX');
curl_setopt($ch, CURLOPT_HEADER, TRUE); // -i
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); // -v
curl_setopt($ch, CURLOPT_CUSTOMEREQUEST, "POST"); //-X
curl_setopt($ch, CURLOPT_BINARYTRANSFER, FALSE); // --data-binary, -d
$output = curl_exec($ch);
curl_close($ch);
echo $output;
答复如下:
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Status: 401
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
Strict-Transport-Security: max-age=31536000
X-UA-Compatible: IE=Edge,chrome=1
Cache-Control: no-cache, private
X-Request-Id: 8d9397e1c2d43580db7XXXXXXXXXXXX
X-Runtime: 0.004153
Date: Wed, 24 Apr 2013 03:14:27 GMT
X-Rack-Cache: miss
Server: nginx/1.2.3 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
{"error":"You need to sign in or sign up before continuing."}1
感谢您的帮助,我非常感谢。您正在将POST值作为HTTP头传递,这是不同的 使用以下命令:
$data = array('contact[first_name]' => 'aaaaaaa', 'api_token' => 'XXXXXXXXX');
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
并删除CURLOPT_HTTPHEADER
选项
作为旁注:链接的API描述没有说明向API发送登录详细信息-只有API令牌(API通常使用此令牌)。示例:
$url = 'link_to_api';
$params = array('username'=>'admin','password'=>'passw0rd');
public function call_ws_post($url = '', $params = array()){
$service_url = $url;
$curl = curl_init($service_url);
$curl_post_data = $params;
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
$decoded = json_decode($curl_response);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('error occured: ' . $decoded->response->errormessage);
}
return $decoded;
}
你能解释一下为什么你认为这与当前的方法相比会有所帮助吗?我认为@eshepard将params设置为header post并没有准确地感谢你,这是100%正确的,并且修复了所有问题。对不起,我是业余爱好者,再次感谢。。