wangshunping/read_requests

requests v0.4.0 没有用递归实现redirect

Opened this issue · 1 comments

def _build_response(self, resp):
        """Build internal Response object from given response."""

        def build(resp):
        	...

        history = []

        r = build(resp)

        if self.redirect:

            while 'location' in r.headers:

                history.append(r)

                url = r.headers['location']

                request = Request(
                    url, self.headers, self.files, self.method,
                    self.data, self.auth, self.cookiejar, redirect=False
                )
                request.send()
                r = request.response

            r.history = history

        self.response = r

这段代码并没有用到递归. 注意在Request实例化的时候参数redirect=False, 这意味着这个新建的实例并不会执行这段代码, 不会递归地进行redirect.

这里的redirect仅仅是使用一个while循环来不断转发的.

request.send() 里边 调用了 _build_response()自己