2014-02-07 44 views
0

我試圖通過發送json數據來調用rest api。 curl命令非常直截了當,但我面臨的問題是使用「--data」參數。使用python請求發送數據參數以休息api

curl -X POST -H <headers> --data 'params={...}' <url> 

我無法弄清楚如何與使用python-請求連接到它的名字'params='發送--data參數:

對於捲曲,如下數據被髮送。

此外,在發出GET請求時,還有很多選項需要與curl requests(-O ,-J, -v, -G,-L)一起發送。

我想知道如何使用python-requests提供這些附加參數。

謝謝。

+0

你有興趣在URL中發送請求參數嗎?我指的是以下網址的大膽位:something.com/get? ** key2 = value2&key1 = value1 ** – mbatchkarov

回答

0

curl是一個非常豐富的圖書館,經過了過去幾十年的很多發展,已經走過了很長的路。與curl相比,python的requests庫仍然是一個寶貝。因此,您不能期望requests中的curl的所有功能。您只會在requests中獲得curl的主要功能。

現在來你的問題。如果你想通過一個變量發送json數據,那麼基本的POST操作(content-type application/x-www-form-urlencoded)將會執行。

payload = {'params': json_string} 
r = requests.post("http://url/post", data=payload) 

但是,如果你想與頭部的內容類型爲JSON張貼數據作爲JSON對象,那麼你就必須使用這個

headers = {'content-type': 'application/json'} 
r = requests.post(url, data=json_string, headers=headers) 

在捲曲帕拉姆-L手段以下重定向。你可以用allow_redirects=True參數實現它:

r = requests.post(url, data=json_string, headers=headers, allow_redirects=True) 

幫助自己從請求document找到您的需求。

+0

嗨Sabuj,感謝您的意見。儘管這對我沒有多大幫助。但是我最終執行了os.system()函數中的curl命令。使用它我也能夠查看curl命令的響應。 python中有一個子進程庫,推薦使用os.system()。但我還沒有想到如何使用子進程庫訪問響應頭文件(python-requests具有可用於相同的響應對象的頭文件屬性)。無論如何感謝您的回覆。這是信息。乾杯! – user1882391

+0

那裏有小編輯。我沒有使用os.system()從curl命令查看響應頭。我只得到了答覆。自從我參與多個項目以來,我有點困惑。一個使用python-requests,另一個使用os.system()。謝謝。 – user1882391