【问题标题】:Python Requests Removing __ (Double Underscore) From URLPython 请求从 URL 中删除 __(双下划线)
【发布时间】: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 参数在那里。如果我删除下划线,参数是可见的。

标签: python python-requests


【解决方案1】:

想通了。它实际上没有显示 URL 中的参数(以为我快疯了)。不过问题并不那么明显。

resp.url 在页面重定向后显示 URL。它正在重定向,因为我没有使用 https 并且服务器只响应 https 请求。一个让很多人头疼的错字。

allow_redirects=False 告诉我 requests 没有删除任何内容。

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 2019-11-25
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2018-08-24
    相关资源
    最近更新 更多