最近做一個爬蟲項目,需要curl請求第三方系統,其中一個請求放到postman的時候秒回,代碼curl請超時,打印錯誤信息:empty reply from server
翻閱網上資料無果,只能用排除法,去掉請求的一些配置看是哪里影響了,最后發現去掉post data 后請求秒回,雖然返回的是請求失敗,但是問題就錯在Post data上面了
感覺觀察發現請求的數據比以往的參數要大,猜測是POST數據過大,再次翻閱資料,以下方法可以解決(注意是在原來的頭部信息中添加一個請求頭):
在使用phpcurl post數據的時候,當數據超過1k的時候,會失敗,不會直接發起請求,而是分為兩步:
一,發送一個請求,包含“Expect:100-continue”頭域,詢問SERVER是否願意接收
二,接收到SERVER返回的 100-continue應答以后,才可以繼續POST數據
解決辦法:
添加curl請求頭
curl_setopt($ch,CURLOPT_HTTPHEADER,array(“Expect:”));