登录
首页 >  Golang >  Go问答

在 Go 中解析来自文本文件的 HTTP 请求和响应

来源:Golang技术栈

时间:2023-04-30 16:27:49 123浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《在 Go 中解析来自文本文件的 HTTP 请求和响应》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

给定以下文件,其中包含 HTTP 请求和 HTTP 响应的 HTTP 流水线流。

如何将此文件解析为我的stream变量?

type Connection struct{
   Request *http.Request
   Response *http.Response
}
stream := make([]Connection, 0)

原始文件:

GET /ubuntu/dists/trusty/InRelease HTTP/1.1
Host: archive.ubuntu.com
Cache-Control: max-age=0
Accept: text/*
User-Agent: Debian APT-HTTP/1.3 (1.0.1ubuntu2)

HTTP/1.1 404 Not Found
Date: Thu, 26 Nov 2015 18:26:36 GMT
Server: Apache/2.2.22 (Ubuntu)
Vary: Accept-Encoding
Content-Length: 311
Content-Type: text/html; charset=iso-8859-1



404 Not Found

Not Found

The requested URL /ubuntu/dists/trusty/InRelease was not found on this server.


http.ReadRequesthttp.ReadResponse
  • http.ReadRequest并且http.ReadResponse可以在同一时间一遍又一遍地调用,bufio.Reader直到EOF它“正常工作”
    • “正常工作”取决于 Content-Length 标头是否存在且正确,因此读取正文会将 Reader 置于下一个请求/响应的开头
    • 阅读代码以准确了解哪些有效,哪些无效
  • resp.Body必须根据Close文档进行编辑,因此我们必须将其复制到另一个缓冲区以保留它
  • 使用您的示例数据(修改 Content-Length 以匹配您的截断),此代码将输出与给定相同的请求和响应
  • httputil.DumpRequest并且httputil.DumpResponse不一定会以与输入文件相同的顺序转储 HTTP 标头,因此不要期望 adiff是完美的
  • 以上就是《在 Go 中解析来自文本文件的 HTTP 请求和响应》的详细内容,更多关于golang的资料请关注golang学习网公众号!

    声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
    相关阅读
    更多>
    最新阅读
    更多>
    课程推荐
    更多>