0
を設定しながら。 コードを以下に示します。PHP - 奇妙な行動CURL私はカールリクエストを送信するためにPHPの関数を書いたヘッダ
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のURLが含まれており、
$headers = ['Content-Type'=>'application/json'];
私は次のように$のparamsは、連想配列のようなパラメータと$ヘッダを含む本
$url = API_ENDPOINT.$method.'/';
$response = curl_post($url,$params_to_send,$headers);
echo $response;
のような関数を呼び出し問題は、コンテンツタイプヘッダーが設定されていることです。しかし、手動でcurl_post関数のように設定すると、
のように完全に動作しています。 私のコードの問題点は何ですか?
'[ 'のContent-Type' => 'アプリケーション/ JSON'];' '[ 'コンテンツタイプ:アプリケーション/ JSON']と等しくない'チェック符 –
次の行がすでにを行います。 。 foreachの($ $名=> $値としてヘッダ){ $ refined_headers [] = " '"。。。$名 ":" $値。 "'"。 } これはうまくいきませんでしたので、私は手動で入力しました。 –
これはあなたが次のようにしていることを意味します: - '$ headers = ['Content-Type' => 'application/json'];動かない。 '$ヘッダ= [「Content-Typeの:アプリケーション/ JSON」]にそれを変更;' –