2
鑑於以下文件包含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
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /ubuntu/dists/trusty/InRelease was not found on this server.</p>
<hr>
<address>Apache/2.2.22 (Ubuntu) Server at archive.ubuntu.com Port 80</address>
</body></html>
GET /ubuntu/dists/trusty-updates/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 200 OK
Date: Thu, 26 Nov 2015 18:26:37 GMT
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Thu, 26 Nov 2015 18:03:00 GMT
ETag: "fbb7-5257562a5fd00"
Accept-Ranges: bytes
Content-Length: 64439
Cache-Control: max-age=382, proxy-revalidate
Expires: Thu, 26 Nov 2015 18:33:00 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Origin: Ubuntu
Label: Ubuntu
Suite: trusty-updates
Version: 14.04
Codename: trusty
[... truncated by author]
我知道有http.ReadRequest。關於響應呢?任何想法/反饋/想法都會受到讚賞。
這是偉大的!非常感謝。我一定錯過了http.ReadResponse函數。我喜歡這個事實,即一遍又一遍地調用讀取函數就可以工作! – mattes
是的,我很驚訝它的工作也。但它基本上處理Content-Length,所以它很有意義。如果你在請求/響應之間有某種分隔符並且使用諸如'io.LimitedReader'之類的東西來確保你不會被錯誤的HTTP響應拋出,那麼可能會更好。 – korylprince