【发布时间】:2014-02-17 08:21:27
【问题描述】:
我编写了以下 python 脚本,使用 python 请求 (http://requests.readthedocs.org/en/latest/):
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"))
如果我查看服务器的访问日志,传入的请求是: /service?key1=value++1&key2=value+2
但是,服务器期望 ...value%20%201&...
我已经读到使用 + 作为空格的占位符是内容类型 application/x-www-form-urlencoded 的一部分,但显然我已经请求了 application/json。
有人知道如何在pythons请求的查询参数中使用%20作为空格吗?
【问题讨论】:
-
你解决过这个问题吗?你是直接用
urllib,还是修改服务器什么的? -
我真的不知道了。很久以前,我无法再访问源代码了
-
我仍然坚持这一点。无赖
-
@Bryce 检查我的答案,简单的解决方案是用 urllib.quote 覆盖 urllib.quote_pluse