2017-10-28 18 views
3

我需要在Python中使用json與請求發送數據。request()得到了一個意想不到的關鍵字參數'json'

Python版本:2.7.6

OS:Ubuntu 16.04

例如:

import json 
import requests 
f = requests.Session() 
data = { 
    "from_date": "{}".format(from_date), 
    "to_date": "{}".format(to_date), 
    "Action": "Search" 
} 

get_data = f.post(URL, json=data, timeout=30, verify=False) 

但運行此代碼後,顯示此錯誤:

get_data = f.post(URL, json=data, timeout=30, verify=False) 
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 497, in post 
return self.request('POST', url, data=data, **kwargs) 
TypeError: request() got an unexpected keyword argument 'json' 

如何發出這問題?

+0

升級'requests',你的版本太舊了。 –

+0

@GhostlyMartijn嗨,如何升級'requests'? – mySun

+0

你是如何安裝它的?作爲一個系統包?什麼版本的Ubuntu?你可以在virtualenv中安裝一個新版本。 –

回答

2

你的數據是一個字典,你應該把它轉換成JSON格式是這樣的:

json.dumps(數據)

import json 
import requests 
f = requests.Session() 

headers = {'content-type': 'application/json'} 
my_data = { 
"from_date": "{}".format(from_date), 
"to_date": "{}".format(to_date), 
"Action": "Search" 
} 

get_data = f.post(URL, data=json.dumps(my_data), timeout=30, headers=headers, verify=False) 
+0

嗨,不要使用json.dumps(my_data)。得到數據後顯示'響應[415]'。 – mySun

+0

@mySun:415表示媒體類型不受支持。最有可能的情況是你在請求中缺少Content-Type頭,或者它不正確(不適用於我的代碼!!或任何錯誤!!!該網站或網址無法獲得你的json格式)我的代碼是正確!我回答了你關於意外關鍵字參數'json'plz的問題:) – DRPK

+0

我在我的筆記本電腦上運行我的代碼並且很容易工作,但是在服務器上傳後顯示此錯誤! :-( – mySun

0

看這裏 http://docs.python-requests.org/en/master/user/advanced/ 我懷疑你 'JSON' 關鍵字實際上應該是 '數據'

GET_DATA = f.post(URL,數據=數據,超時= 30, verify = False)

+0

嗨,請勿使用json.dumps(my_data)。在獲得數據顯示響應之後[415] – mySun

+0

不,對於在過去3年中發佈的任何版本的請求,「json」都是正確的,從2.4.2開始。 –

+0

請參閱http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests –

相關問題