我正在使用python请求模块,这两种方式导致不同的结果。
将参数赋予网址:
url = 'http://my_url?m=getMember&mail=abc@de.com'
requests.get(url=url).json()
分别提供参数:
url = 'http://my_url'
data = {'m': 'getMember', 'mail':'abc@de.com'}
requests.get(url = url, data = data).json() #also tried 'data = json.dumps(data)'
第一种方法给出正确的结果。
但是第二种方式会出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home1/irteam/.local/lib/python3.6/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib64/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
两者的响应码均为200。
>>> r = requests.post(url = url, data = json.dumps(data))
>>> r
<Response [200]>
>>> r = requests.post(url = url, data = data)
>>> r
<Response [200]>
当我输入r.text时,
>>> r.text
''
两者之间有什么区别?
谢谢:)
答案 0 :(得分:0)
通过传递data
参数,您正在发送带有get
请求的有效负载。但不设置参数。
对于设置params
,还有另一个参数。这样就可以了:
requests.get(url = url, params = data).json()
希望这会有所帮助。