Jes*_*kum 21 python python-requests
我使用python请求(http://requests.readthedocs.org/en/latest/)编写了以下python脚本:
import requests
payload = {'key1': 'value 1', 'key2': 'value 2'}
headers = {'Content-Type': 'application/json;charset=UTF-8'}
r = requests.get("http://example.com/service", params=payload, headers=headers,
auth=("admin", "password"))
Run Code Online (Sandbox Code Playgroud)
如果我查看服务器的访问日志,传入的请求是:/ service?key1 = value ++ 1&key2 = value + 2
但是,服务器期望value%20%201&
......
我已经读过使用+作为空格的占位符是内容类型application/x-www-form-urlencoded的一部分,但显然我已经请求了application/json.
有谁知道如何使用%20作为pythons请求的查询参数中的空格?
Bre*_*tty 11
为了跟进@ WeaselFox的回答,他们引入了一个接受quote_via
关键字参数的补丁urllib.parse.urlencode
.现在你可以这样做:
import requests
import urllib
payload = {'key1': 'value 1', 'key2': 'value 2'}
headers = {'Content-Type': 'application/json;charset=UTF-8'}
params = urllib.parse.urlencode(payload, quote_via=urllib.parse.quote)
r = requests.get("http://example.com/service", params=params, headers=headers,
auth=("admin", "password"))
Run Code Online (Sandbox Code Playgroud)
小智 1
尝试一下。
import urllib
urllib.urlencode(params)
Run Code Online (Sandbox Code Playgroud)
http://docs.python.org/2/library/urllib.html#urllib.urlencode
归档时间: |
|
查看次数: |
10618 次 |
最近记录: |