req, err := http.NewRequest("GET", "http://example.com", nil)req.AddCookie(&http.Cookie{Name: "c", Value: "ccc"})resp, err := client.Do(req)我需要在磁盘上缓存响应,并在从缓存恢复后将其类型保持为 http.Response。有任何想法吗?
2 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
最简单的方法是使用httputil.DumpResponse和http.ReadResponse。
有关示例,请参见此处。(您必须将代码复制到本地机器上并在那里运行,因为 Playground 不允许 I/O)
第一个将您收到的请求转储,也可以选择将正文转储到内存中的 [] 字节,然后您可以将其写入磁盘。稍后您可以从磁盘(或您存储它的任何位置)读取响应并将其包装在 bufio.Reader 中,然后将其传递给 http.ReadResponse。
ReadResponse 将 *http.Request 作为第二个参数,用作响应的 Request 字段的值。如果给出 nil,则返回的 Response 将在其 Request 字段中包含 GET 请求。
心有法竹
TA贡献1866条经验 获得超5个赞
...或使用https://github.com/lox/httpcache。一个符合 RFC7234 的 golang http.Handler,用于缓存 HTTP 响应
- 2 回答
- 0 关注
- 367 浏览
添加回答
举报
0/150
提交
取消