簡體   English   中英

我需要幫助使用PHP將Postman的成功請求轉換為CURL命令(涉及HTTPS和POST)

[英]I need help converting a successful request from Postman into CURL commands using PHP (involves HTTPS and POST)

我嘗試訪問的端點需要HTTPS和基本身份驗證。 我的團隊獲得了一個API密鑰,文檔說明使用密鑰作為用戶名,並將密碼留空。

以下是文檔中的示例CURL請求:

curl -i -k -u '<api_key>': -XPOST --data-urlencode data@/path/to/test/file.json "https://<your_subdomain>.vendor.org/api/v1/assessments/import"; echo ""

當我使用Chrome的Postman擴展程序執行以下操作時,我從服務器獲得了成功的響應: 在此輸入圖像描述

我正在嘗試使用PHP(XAMPP安裝)在本地執行此操作。 以下是服務器的響應,說用戶名/密碼不正確:

 function curlPost($url, $headers, $username, $password, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CAINFO, 'certificate.pem'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); print_r(curl_exec($ch)); // print_r(curl_getinfo($ch)); // print_r(curl_error($ch)); curl_close($ch); } $data = '{"key":"value", "key":"value"}'; curlPost('https://domain.com/api/data', ['Content-Type: application/xml'], 'api_key', '', $data); 

{"success":false,"errors":["Email\/Username or password incorrect. Please try again."],"warnings":[],"info":[],"meta":[],"results":[]}

$data中使用的JSON字符串是從成功的Postman請求中復制並粘貼的。

certificate.pem與腳本位於同一文件夾中,並且已向每個人提供讀/寫權限。 我已經嘗試從我的計算機導出供應商網站的特定證書,以及在此帖子的最高回復中鏈接的CA捆綁包。 我能夠使用它通過PHP / CURL成功擊中供應商的api-key-test端點。

我對此很陌生。 你介意幫助我繞過我所缺少的東西嗎? 雖然我已經復制並粘貼了很多,但功能基本上都是我自己的。 標題的參數將用於其他內容。

使用HTTP Authorization標頭的基本身份驗證使用Base64編碼的值“username:password”(不帶雙引號)

所以我假設您需要Base64編碼“yourApiKeyValue:”並將其放入cURL命令的Authorization標頭中

MDN參考 - HTTP身份驗證

編輯:這也可能有所幫助

如何使用http basic authentication-with-php-curl發出請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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