【问题标题】:python requests @ paramspython请求@参数
【发布时间】:2018-05-19 13:52:15
【问题描述】:

我尝试在参数中使用带有“@”的 request.get,但在输出中我有“%40”我如何解码这个字典?

使用 Python3

import requests

payload = {'OPERATION-NAME': 'findItemsByProduct','productId.@type':'ReferenceID'}

req = requests.post(url, params=payload)

print(req.url)

输出是 - 'url?productId.%40type=ReferenceID'

【问题讨论】:

  • 也许this 是您要找的?
  • 这个我也查过了,不行
  • 使用urllib.parse.unquoteunquote("url?productId.%40type=ReferenceID") 返回'url?productId.@type=ReferenceID'。这有什么问题?
  • AttributeError: 'dict' 对象没有属性 'split'
  • 嘿,评论区不是用来讨论出现的新问题的。如果您已经部分解决了它并且遇到了新的异常,那么是时候提出一个新问题了(在进行适当的研究之后!):)

标签: python python-requests


【解决方案1】:

使用“数据”参数而不是参数。您还应该指定标头,在本例中为 json,然后使用 json.dumps() 将有效负载 dict 转换为 json。

import requests
import json


payload = {'productId.@type':'ReferenceID'}

req = requests.post(url, headers={'Content-Type': 'application/JSON'}, data=json.dumps(payload))

print(req.url)

【讨论】:

  • 我看到你回答了 OP,但没有提供解释。请在您的回答中包含一些上下文。
  • 我忘了包含标题,再试一次,让我知道。确保您有一个有效的网址。顺便说一句,您得到的不是请求 (req),而是响应,因此您应该通过 resp 重命名 req。
  • TypeError: request() got an unexpected keyword argument 'header'
  • 你用的是什么python? Pyhton2 / Python3,要求什么版本??
  • 我的错是'headers'复数形式。我没有测试只是从我的脑海中编写的代码。它应该可以工作。
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2016-09-17
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多