【发布时间】:2015-06-18 22:16:36
【问题描述】:
我正在使用 Python 请求来发送 GET 请求。 GET 请求参数具有包含双下划线的变量。例如:
example.com/index.php?__action=login&__location=hub
但是,当使用 requests.get() 并检查使用的 url 时,它会完全去除包含双下划线的变量。这是我的例子:
jsonData = json.dumps({
'foo': 'bar'
})
params = {
'data': urllib.quote_plus(jsonData),
'__action': 'login',
'__location': 'hub'
}
url = 'http://example.com/p/'
resp = request.get(url, params=params)
print resp.url
URL 发送不正确,缺少包含双下划线的参数。
有什么想法吗?
【问题讨论】:
-
请包含您实际运行的真实代码以及该代码的真实输出。不要在您运行的代码和您发布的代码之间进行任何更改,并确保您发布的输出是该代码的真实输出。
-
你的代码运行得很好,除了你需要使用
requests.get,而不是request.get。回复是http://example.com/p/?__action=login&data=%257B%2522foo%2522%253A%2522bar%2522%257D&__location=hub -
是什么让你认为它是在没有下划线参数的情况下发送的?
-
因为当我打印
requests.url时,URL 缺少带下划线的参数,但data参数在那里。如果我删除下划线,参数是可见的。