簡體   English   中英

CURLOPT_POST 與 CURLOPT_CUSTOMREQUEST

[英]CURLOPT_POST vs CURLOPT_CUSTOMREQUEST

在 Acid API 上使用電子郵件

通過 PHP Curl 向端點http://sandbox.emailonacid.com/v4/GetClientList發送POST請求時,我嘗試了以下替代方法:

  1. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST")
  2. curl_setopt($ch, CURLOPT_POST, 1);

第一個選項有效,但第二個選項返回 HTTP 400 錯誤請求。

誰能解釋這種行為?

默認情況下, CURLOPT_POST將使用“ application / x-www-form-urlencoded”Content-Type標頭執行常規的POST請求,該標頭通常是提交HTML表單時使用的類型。


您正在使用的API限制了application/jsonapplication/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM