簡體   English   中英

如何使用郵遞員激發cURL請求到請求

[英]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)將產生以下結果:


var_dump輸出


在數據的末尾帶有a = (例如: {"jsonrpc": "2.0", "method": "feed.list", "id": 1}= ), var_dump將產生以下內容:


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.

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