2016-09-28 13 views
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関数のように設定すると、

のように完全に動作しています。 私のコードの問題点は何ですか?

+0

'[ 'のContent-Type' => 'アプリケーション/ JSON'];' '[ 'コンテンツタイプ:アプリケーション/ JSON']と等しくない'チェック符 –

+0

次の行がすでにを行います。 。 foreachの($ $名=> $値としてヘッダ){ $ refined_headers [] = " '"。。。$名 ":" $値。 "'"。 } これはうまくいきませんでしたので、私は手動で入力しました。 –

+0

これはあなたが次のようにしていることを意味します: - '$ headers = ['Content-Type' => 'application/json'];動かない。 '$ヘッダ= [「Content-Typeの:アプリケーション/ JSON」]にそれを変更;' –

答えて

0

は、問題を修正しました。問題は、私は、私は以下とissueisが解決することを変更し

$refined_headers[] = "'".$name.": ".$value."'"; 

を必要としていませんでしたヘッダの前と後の2つの単一引用符を、置く ました。

$refined_headers[] = $name.": ".$value; 
関連する問題