2017-09-27 6 views
0

私は内部システム用のMoodle認証プラグインを作成しています。更新されたプロファイル情報を外部APIに同期させるプラグインの部分については、PUTリクエストを行う必要があります。cURL PUTは本体にデータを送信しません

私が経験している問題は、要求の一部が送信されていることですが、その後で停止し、最終的にはカール操作がタイムアウトになることです。

要求を行うための私のコードは:

$curl = curl_init(); 
$headers = array(); 
curl_setopt($curl, CURLOPT_PUT, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); 
array_push($headers, 'Content-Type: application/json'); 
array_push($headers, 'Expect:'); 
array_push($headers, 'Connection: keep-alive'); 

if ($authtoken){ 
array_push($headers, 'Authorization: Bearer '.$authtoken); 
} 

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($curl, CURLOPT_URL, $serverurl.'/'.$functionname); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLINFO_HEADER_OUT, true); 
curl_setopt($curl, CURLOPT_FAILONERROR,true); 
$result = curl_exec($curl); 

if (curl_error($curl)){ 
    curl_close($curl); 
    return false; 
} 

curl_close($curl); 
return $result; 

このコードのほとんどは意図したように、それは、他の要求に使用されるように、動作し、正常に動作します。しかし、このようなPUTリクエストの場合は、Fiddlerによれば、2324のうち614バイトなど合計614バイトが送信されます。最終的にはタイムアウトしてエラーが発生します。

答えて

0

だから私はそれを修正しました。これに

curl_setopt($curl, CURLOPT_PUT, 1); 

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); 
ソリューションは、この行を変更しました
関連する問題