學習筆記
/**
* [postParams post提交數據]
* @param [type] $url [接口地址]
* @param [type] $params [參數]
* @param boolean $useCert [是否需要證書,默認不需要]
* @param integer $second [url執行超時時間,默認30s]
* @param boolean $json [是否json]
* @return [type] [description]
*/
function postParams($url,$params, $useCert = false, $second = 30,$json=false)
{
$ch = curl_init();
//設置超時
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
//如果有配置代理這里就設置代理
// if($this->config['curlProxyHost'] != "0.0.0.0"
// && $this->config['curlProxyPort'] != 0){
// curl_setopt($ch,CURLOPT_PROXY, $this->config['curlProxyHost']);
// curl_setopt($ch,CURLOPT_PROXYPORT, $this->config['curlProxyPort']);
// }
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);//2 嚴格校驗 ,不想驗證也可設為0
//設置header
// $header[] = "Content-type: text/xml";
// curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
// curl_setopt($ch, CURLOPT_HEADER, "Content-type: text/xml");
//要求結果為字符串且輸出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if($useCert == true){
curl_setopt($ch, CURLOPT_VERBOSE, '1'); //debug模式,方便出錯調試
//設置證書
//使用證書:cert 與 key 分別屬于兩個.pem文件
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, dirname(dirname(dirname(__FILE__))) . '/' . config('sslCertPath'));
//curl_setopt($ch, CURLOPT_SSLCERTPASSWD,"Abcd1234");
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, dirname(dirname(dirname(__FILE__))) . '/' . config('sslKeyPath'));
//curl_setopt($ch, CURLOPT_SSLKEYPASSWD,"Abcd1234");
}
if($json && is_array($params)) {
$params = json_encode($params);
}
//設置post方式提交
curl_setopt($ch, CURLOPT_POST, 1);
//設置post數據
if($json){ //發送JSON數據
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Content-Type: application/json; charset=utf-8',
'Content-Length:' . strlen($params)
)
);
}else{
// var_dump(json_decode($params));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(json_decode($params)));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Content-Type: application/x-www-form-urlencoded; charset=utf-8'));
}
//運行curl
$data = curl_exec($ch);
//返回結果
if($data){
curl_close($ch);
// DI()->logger->debug('curl reback data',$data);
return $data;
} else {
$error = curl_errno($ch);
curl_close($ch);
// DI()->logger->error("curl出錯","錯誤碼:$error");
return false;
}
}