所以我正在为我们的内部系统制作一个Moodle auth插件。对于将更新的配置文件信息同步回外部API的插件部分,我需要发出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请求,它从总数中发送大约614个字节,例如2324中的614个,根据Fiddler,然后它停止。最终,它超时了,我收到了错误。
答案 0 :(得分:0)
所以我已经修好了。解决方案是改变这一行:
curl_setopt($curl, CURLOPT_PUT, 1);
对此:
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');