PHP CURL 送 PUT、DELETE、OPTIONS 的方法

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

所以 CURLOPT_CUSTOMREQUEST 要還原回預設值的話,做下述設定即可:

  • curl_setopt($ch, CURLOPT_CUSTOMREQUEST, NULL);

設定此就一切正常囉~

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料