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,这是您无法控制的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |