2017-10-28 157 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 –

相关问题