代码之家  ›  专栏  ›  技术社区  ›  yanchenko

URLLIB2:提交表单,然后重新定向

  •  1
  • yanchenko  · 技术社区  · 15 年前

    我的目标是开发一个便携式的URLLIB2解决方案,它可以发布一个表单,然后将用户重定向到所显示的内容。 过账部分很简单:

    request = urllib2.Request('https://some.site/page', data=urllib.urlencode({'key':'value'}))
    response = urllib2.urlopen(request)
    

    提供 data 设置要发布的请求类型。现在,我怀疑我应该关心的所有数据都来自 response.info() &安培; response.geturl() . 我应该做一个 self.redirect(response.geturl()) 里面 get(self) 方法 webapp.RequestHandler .

    但是我应该如何处理头部呢?还有什么我忽略的吗?非常感谢代码片段。:)

    短暂性脑缺血发作

    编辑:我想出了一个天真的解决方案。重定向,但远程服务器显示一个错误,指示与以前发布的表单不匹配:

    info = response.info()
    for key in info:
        self.response.headers[key] = info[key]
    self.response.headers['Location'] = response.geturl()
    self.response.set_status(302)
    self.response.clear()
    
    3 回复  |  直到 15 年前
        1
  •  2
  •   Wooble    15 年前

        2
  •  3
  •   monkut    15 年前

    HTTPRedirectHandler

    # Created handler
    redirectionHandler = urllib2.HTTPRedirectHandler() 
    
    # 2 apply the handler to an opener
    opener = urllib2.build_opener(redirectionHandler)
    
    # 3. Install the openers
    urllib2.install_opener(opener)
    
    
    request = urllib2.Request('https://some.site/page', data=urllib.urlencode({'key':'value'}))
    response = urllib2.urlopen(request)
    

    urllib2.HTTPRedirectHandler