加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python – 尝试使用意外的mimetype解码JSON:

发布时间:2020-12-20 12:41:31 所属栏目:Python 来源:网络整理
导读:我最近从请求交换到aiohttp,因为我无法在asyncio循环中使用它. 交换完美,一切顺利,除了一件事.我的控制台满满的 Attempt to decode JSON with unexpected mimetype: 和 Attempt to decode JSON with unexpected mimetype: txt/html; charset=utf-8 我的代码
我最近从请求交换到aiohttp,因为我无法在asyncio循环中使用它.

交换完美,一切顺利,除了一件事.我的控制台满满的

Attempt to decode JSON with unexpected mimetype:

Attempt to decode JSON with unexpected mimetype: txt/html; charset=utf-8

我的代码也有一个网站列表,它也可以抓取JSON,每个网站都不同,但我的循环基本上是相同的,我在这里简化了它:

PoolName = "http://website.com"
endpoint = "/api/stats"
headers = "headers = {'content-type': 'text/html'}" #Ive tried "application/json" and no headers
async with aiohttp.get(url=PoolName+endpoint,headers=headers) as hashrate:
                hashrate = await hashrate.json()
endVariable = hashrate['GLRC']['HASH']

它工作得很好,连接到站点抓取json并正确设置endVariable.但出于某种原因

Attempt to decode JSON with unexpected mimetype:

每次进入循环时打印.这很烦人,因为它会向控制台打印统计信息,并且每次抓取站点json时它们都会在错误中丢失

有没有办法解决这个错误或隐藏它?

解决方法

aiohttp正在尝试 do the right thing and warn you个不正确的Content-Type,这可能最糟糕地表明你根本没有获得JSON数据,而是一些不相关的东西,例如错误页面的HTML内容.

但是,在实践中,许多服务器配置错误,总是在其JSON响应中发送不正确的MIME类型,而JavaScript库显然并不关心.如果你知道你正在处理这样的服务器,你可以通过自己调用json.loads来使警告静音:

import json
# ...

async with self._session.get(uri,...) as resp:
    data = await resp.read()
hashrate = json.loads(data)

在您尝试时指定Content-Type没有任何区别,因为它只会影响您的请求的Content-Type,而问题在于服务器响应的Content-Type,这是您无法控制的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读