req, err := http.NewRequest("GET", "http://example.com", nil) req.AddCookie(&http.Cookie{Name: "c", Value: "ccc"}) resp, err := client.Do(req)
从缓存还原后,我需要在磁盘上缓存resp并保持其类型为http.Response。有任何想法吗?
最简单的方法是使用httputil.DumpResponse和http.ReadResponse。
请参阅此处的示例。(您必须将代码复制到本地计算机上并在本地计算机上运行,因为Playground不允许I / O)
第一个将接收到的请求转储到内存中的[]字节中,然后可以将其写入磁盘,然后将其转储到正文中。稍后,您可以从磁盘(或存储它的位置)中读取响应,并将其包装在bufio.Reader中,并将其传递给http.ReadResponse。
ReadResponse将* http.Request作为第二个参数,用作响应的Request字段的值。如果给出nil,则返回的Response将在其Request字段中具有GET请求。