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バイトが送信されます。最終的にはタイムアウトしてエラーが発生します。