[英]How to stimulate cURL request to a request using postman
我正在對本地主機使用以下cURL請求,該請求運行良好:
curl -u admin:e4d4face52f2e3dc22b43b2145ed7c58ce66e26b384d73592c -d "{\"jsonrpc\": \"2.0\", \"method\": \"feed.list\", \"id\": 1}" http://localhost/minifluxR/jsonrpc.php
但是,當我使用Postman而不是cURL發送相同的請求時,我得到了:
{"jsonrpc":"2.0","id":null,"error":{"code":-32700,"message":"Parse error"}}
在Postman中,我使用了GET
請求並將以下內容作為標題發送:
url:http://localhost/minifluxR/jsonrpc.php
username:admin
api_token:e4d4face52f2e3dc22b43b2145ed7c58ce66e26b384d73592c
method: feed.list
以下是我嘗試觸發的PHP函數:
$server = new Server;
$server->authentication(array(
\Model\Config\get('username') => \Model\Config\get('api_token')
));
// Get all feeds
$server->register('feed.list', function () {
return Model\Feed\get_all();
});
請幫助我糾正這些錯誤。
使用cURL時, -u
選項 (或--user
)用於提供HTTP Basic身份驗證的憑據。 這會將Authorization
標頭設置為包含必要的數據,以便與服務器進行身份驗證。
這些步驟適用於Postman的打包應用程序 。 對於傳統應用程序的步驟,查看這個修訂的這個答案。
要像在cURL命令中一樣使用HTTP Basic身份驗證,請單擊“ 授權”選項卡,然后輸入您的憑據。 單擊更新請求將為您添加必要的Authorization
標頭。
要以與使用cURL相同的方式提交JSON數據,請使用POST
請求,在“ 正文”選項卡下選擇raw ,然后按如下所示輸入數據:
為了調試它,我使用了Fiddler-一個免費的Web調試代理。
我使用了cURL的--proxy
選項,使其通過Fiddler發送其請求,如下所示:
curl \
--proxy http://localhost:8888 \
-u foo:bar \
-d "{\"jsonrpc\": \"2.0\", \"method\": \"feed.list\", \"id\": 1}" \
http://localhost
現在,請求已通過Fiddler,我可以從會話列表中選擇它,然后使用“原始”檢查器查看原始請求:
這表明cURL正在使用HTTP Basic身份驗證和application/x-www-form-urlencoded
內容發出POST
請求。 這種類型的數據通常由鍵和值組成,例如foo=bar&hoge=fuga
。 但是,此cURL請求正在提交沒有值的密鑰。 調用var_dump($_POST)
將產生以下結果:
在數據的末尾帶有a =
(例如: {"jsonrpc": "2.0", "method": "feed.list", "id": 1}=
), var_dump
將產生以下內容:
但是,在您的情況下,似乎JsonRPC將使用file_get_contents('php://input')
。 如果數據以請求結尾,則返回與請求一起提交的數據,包括=
。 因為它將嘗試將輸入數據解析為JSON字符串,所以如果字符串以=
結尾,它將失敗,因為那將是無效的JSON。
使用Chrome的FoxyProxy擴展,我為Fiddler( 127.0.0.1:8888
)創建了代理配置,這使我可以輕松調試Postman的POST
請求發送的數據。 使用x-www-form-urlencoded
和不帶值的foo
的鍵,發送的數據實際上是foo=
,這將導致您的JSON字符串無效。
但是,使用“原始”輸入將允許發送指定的數據,而無需在其末尾添加=
,從而確保數據是有效的JSON。
Curl默認使用HTTP基本身份驗證。 您在Postman中設置的標題是不同的。 嘗試在Postman中使用基本身份驗證。 在頂部面板中,您輸入用戶名和密碼,將生成授權標頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.