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

HTTP响应未被操纵

  •  0
  • Tinku  · 技术社区  · 7 年前

    我用下面的行发出了一个HTTP请求。

    h.request('POST', uri, body,headers={})
    

    我正在收集变量中的响应。

    res = h.getresponse()
    

    在那之后,我试图打印响应

     print(res.msg)
     print(res.status)
     print(res.read())
    

    在3 print语句之后,我试图修改响应,将res.read()输出存储在不同的变量中,以转换为字符串并进行进一步处理。

      text=res.read().decode("utf-8")  
    

    但在执行此操作时,解码的响应不会存储在变量中。如果我在打印后再打印文本(res.read()),它什么也不会给我

     print(res.read())
     text=res.read().decode("utf-8")
     print(text)
    

    上面的输出只打印出第一条print语句。如果我删除第一条语句并执行以下操作。

      text=res.read().decode("utf-8")
      print(text)
    

    它给了我所需的O/P。但我希望它们都能工作。那么,有没有办法做到这一点。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sazzy    7 年前

    如果你这样做了 res.read() ,它在打印语句期间读取响应的内容。在第二次执行时,您不能再次读取,除非您返回或重新执行请求。

    存储第一个 .read() 在变量中,然后打印它。

        2
  •  0
  •   ThunderStorm    5 年前

    或者你可以尝试以下方法。

    from  requests import request
    res = request('POST', uri, data,headers={})
    print(res.text)