PHP CURL 要傳送 PUT、DELETE、OPTIONS 要怎麼傳送?傳送過後,同一個 connection 要怎麼 reset?
PHP CURL 送 PUT、DELETE、OPTIONS 的方法
PHP 想要傳送 PUT、DELETE、OPTIONS 等,可以使用 curl_setopt 的 CURLOPT_CUSTOMREQUEST 的參數。
- 註:CURLOPT_CUSTOMREQUEST 此參數只要寫 PUT、DELETE 或 OPTIONS,不要寫 "PUT /xxx HTTP/1.1" 等等的
範例:
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'OPTIONS');
不過這樣子設定後,同個連線都會一直發送,要怎麼取消呢?
一開始想應該做類似下述設定即可(POST 就設定 POST,GET 設定 GET):
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');- 注意:上述兩個都是錯誤範例
但是都是行不通的,可能是 POST 有 curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 會重複送 (沒驗證,不確定原因,但是確實會有問題)
找到此篇:php - How to reset CURLOPT_CUSTOMREQUEST
- Restore to the internal default by setting this to NULL.
- 詳見此文件:CURLOPT_CUSTOMREQUEST
所以 CURLOPT_CUSTOMREQUEST 要還原回預設值的話,做下述設定即可:
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, NULL);
設定此就一切正常囉~