[英]CURLOPT_POST vs CURLOPT_CUSTOMREQUEST
通過 PHP Curl 向端點http://sandbox.emailonacid.com/v4/GetClientList
發送POST
請求時,我嘗試了以下替代方法:
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST")
curl_setopt($ch, CURLOPT_POST, 1);
第一個選項有效,但第二個選項返回 HTTP 400 錯誤請求。
誰能解釋這種行為?
默認情況下, CURLOPT_POST將使用“ application / x-www-form-urlencoded”的Content-Type
標頭執行常規的POST請求,該標頭通常是提交HTML表單時使用的類型。
您正在使用的API限制了application/json
或application/xml
Accept
標頭,具體取決於您發送的是JSON還是XML有效負載。
您可以使用以下命令覆蓋常規POST標頭的默認Content-Type
:
$headers = ['Content-Type: application/json'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
在對我的一個項目進行一些調試時,我發現使用
curl_setopt($ch, CURLOPT_POST, 1);
不提供有效載荷
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
將導致 Curl 將該調用解釋為 GET 調用。 對於大多數期望 POST 調用的 api,這將返回 400 http 代碼(錯誤請求)。
如果你使用
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST")
您主動將請求類型設置為值 POST,curl 不會將其解釋為 GET。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.