【问题标题】:Python aiohttp change my URL. Why this happens?Python aiohttp 更改我的 URL。为什么会发生这种情况?
【发布时间】:2021-08-17 22:11:42
【问题描述】:

我在使用 aiohttp Python 模块时遇到了麻烦:在某些情况下(并非总是,没有模式,只是随机发生),get 方法会产生意外的 URI...

我的客户端代码是这样的(URI 是虚拟的):

 # Python 3
 import aiohttp, async

 async with aiohttp.ClientSession() as session:

       URI = 'https://apiprovider.io/route?paran1=hi&key=hsaf4ed8f4ad6f874asd'

       async with session.get(URI) as response:
              result_data = await response.json()

错误信息(并非总是如此,而是随机的):

 aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with 
 unexpected mimetype: ', url=URL('https://apiprovider.io/route?paran1=hi&key=hsaf4ed8f4ad6f874asd')

Python 指责“解码 JSON”错误,但这只是真正问题的结果。

服务器响应是: {"status":"ERROR","re​​quest_id":"random_numb","error":"Unknown API Key"}

key "error":"Unknow API key" 是由于模块(或其他方式)更改了 de URI 而引起的。

原来的 URI 变成了https://apiprovider.io/route?paran1=hi&key=hsaf4ed8f4ad6f874asd'

请注意字符串末尾的单个 cote,它似乎成为 URI 本身的一部分……正好在“key”参数中。

如果我在浏览器中使用相同的 URI,最后只删除单个 cote,结果是正确的。

有人可以向我解释为什么会发生这种情况,我该如何解决?

我已经尝试更改 URI 参数的顺序,并且还尝试在 get 方法中使用“params”参数,如下所示:

 [...]
 async with session.get(URI, params={'key':key, 'param1'=hi}) as response:
 [...]

这些都不起作用...错误会停止一段时间,但最终会回来。

非常感谢!

【问题讨论】:

  • 为什么你认为 URL 的末尾有一个单引号?错误消息说:URL('https://the_url') - 两个单引号都是 URL 字符串表示的一部分,实际上并不存在 in 字符串
  • 非常感谢您的评论!我建议错误出现在单个 cote 中,因为如果我在浏览器中请求相同的 URL,我会收到服务器错误,即我的“key”arg 不正确(不是)......但是当我删除单个 cote 时,错误已修复......就像退格一样简单......注意:当错误出现时,单个代码被“附加”到 URL,这是我用来在浏览器中测试的那个(我复制了生成的链接通过错误并将其传递到我的浏览器中)。

标签: python python-3.x get aiohttp


【解决方案1】:

错误消息指出,您的错误是由于 MIME 类型不正确导致的 JSON 解码错误,这基本上意味着 API 返回的响应看起来像 JSON,但服务器未将其标记为 JSON。更多细节解释这个in this answer.

正如其他人在评论中标记的那样,这也不是因为您的网址正在更改。

您可以通过如下更改代码来禁用此行为,这将阻止对 mimetype 的检查。

async with session.get(URI) as response:
              result_data = await response.json(content_type=None)

【讨论】:

  • 非常好!我会试试这个..非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2021-04-30
  • 2010-09-22
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多