Python 3.x TypeError(';不是有效的非字符串序列或映射对象';,)
我正在使用aiohttp get请求从另一个web api下载一些内容 但我收到:Python 3.x TypeError(';不是有效的非字符串序列或映射对象';,),python-3.x,asynchronous,python-requests,python-asyncio,aiohttp,Python 3.x,Asynchronous,Python Requests,Python Asyncio,Aiohttp,我正在使用aiohttp get请求从另一个web api下载一些内容 但我收到: exception = TypeError('not a valid non-string sequence or mapping object',) 以下是我试图发送的数据 data = "symbols=LGND-US&exprs=CS_EVENT_TYPE_CD_R(%27%27,%27now%27,%271D%27)" 如何解决 我试过两种方法: r = yield from aiohttp.
exception = TypeError('not a valid non-string sequence or mapping object',)
以下是我试图发送的数据
data = "symbols=LGND-US&exprs=CS_EVENT_TYPE_CD_R(%27%27,%27now%27,%271D%27)"
如何解决
我试过两种方法:
r = yield from aiohttp.get(url, params=data) # and
r = yield from aiohttp.post(url, data=data)
同时,我能够使用以下工具获取数据:
r = requests.get(url, params=data) # and
r = requests.post(url, data=data)
但我需要异步实现
如果我可以使用import requests
库而不是import aiohttp
来发出异步http请求,也可以向我建议一些方法,因为在许多情况下,aiohttp post&get请求不起作用,但同样适用于requests.get&post请求。使用字节(即'b'前缀)对于数据
参数
r = await aiohttp.post('http://httpbin.org/post', data=b'data')
另外,
params
参数应该是dict或元组列表 我尝试了以上的解决方案,但现在我收到了错误的输入。你能详细说明一下吗?您的意思是HTTP错误405(不允许使用方法)?你可能在做POST,页面只允许GET,反之亦然。对于GET,您需要使用params参数而不是数据,但它必须是一个dict或list,正如我在上面提到的那样。@miles82中放宽了该要求