以下是我提出请求的方式:
from aiohttp import request
def make_request(self, request_payload, request_headers, request_method, request_url_path):
url = self.config["HOST_URL"] + "/" + request_url_path
response = yield from request(request_method, url=url, params=request_payload, headers=request_headers, allow_redirects=False)
return response
此处成功请求的预期响应是response status 302
和响应中的Location
标头,其中包含需要重定向的网址。
问题是,我的响应状态为200,这是最终网址的响应。我怎样才能实现我的目标?
" allow_redirects =假"应该有用,但它没有。我不确定如何才能让它按照我的需要工作。
答案 0 :(得分:1)
注意:如果您使用旧的基于生成器的语法,则应使用装饰器asyncio.coroutine
。如果您使用的是Python 3.5+,请使用new syntax for coroutines。
请提供可以复制的最小代码段(包括url,其他参数,你的Python版本),因为我没有得到你所说的行为:
import asyncio
from aiohttp import request
@asyncio.coroutine
def make_request():
url = 'http://httpbin.org/redirect/1'
response = yield from request(method='GET', url=url, allow_redirects=False)
print(response)
loop = asyncio.get_event_loop()
loop.run_until_complete(make_request())
输出:
<ClientResponse(http://httpbin.org/redirect/1) [302 FOUND]>
<CIMultiDictProxy('Connection': 'keep-alive', 'Server': 'meinheld/0.6.1', 'Date': 'Wed, 15 Nov 2017 16:28:55 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '215', 'Location': '/get', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true', 'X-Powered-By': 'Flask', 'X-Processed-Time': '0.000524044036865', 'Via': '1.1 vegur')>
答案 1 :(得分:0)
Request支持可选的allow_redirects参数,您可以将其设置为False。