我在PHP中编写了一个函数来发送CURL请求。 代码如下。
function curl_post($url,$fields,$headers=[],$connect_timeout = 3,$timeout = 20) {
$ch = curl_init();
$postvars = '';
foreach($fields as $key=>$value) {
$postvars .= $key . "=" . $value . "&";
}
$postvars = trim($postvars,'&');
$postvars = json_encode($fields);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, 1); //0 for a get request
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,$connect_timeout);
curl_setopt($ch,$timeout, 20);
$refined_headers = [];
if(sizeof($headers)) {
foreach($headers as $name => $value) {
$refined_headers[] = "'".$name.": ".$value."'";
}
print_r($refined_headers);
//$refined_headers = ['Content-Type: application/json'];
//echo $refined_headers;exit;
curl_setopt($ch,CURLOPT_HTTPHEADER,$refined_headers);
}
$response = curl_exec($ch);
$info = curl_getinfo($ch,CURLINFO_CONTENT_TYPE);
print_r($info);
curl_close ($ch);
return $response;
}
所以我调用了这个函数
$url = API_ENDPOINT.$method.'/';
$response = curl_post($url,$params_to_send,$headers);
echo $response;
其中$ url包含我的API网址,$ params包含参数作为关联数组和$ header,如下所示
$headers = ['Content-Type'=>'application/json'];
我的问题是,内容类型标题是设置。但是当我在curl_post函数中手动设置它时,如
$refined_headers = ['Content-Type: application/json']
它完美无缺。 我的代码有什么问题。
答案 0 :(得分:0)
修正了问题。问题是 我在标题之前和之后放了两个单引号,这是不需要的
$refined_headers[] = "'".$name.": ".$value."'";
我将其更改为以下内容并解决了问题。
$refined_headers[] = $name.": ".$value;