HTTP-Anfragen und -Antworten aus einer Textdatei in Go analysieren
Einführung
Diese Frage konzentriert sich auf das Parsen eine Textdatei, die einen Stream von HTTP-Anfragen und -Antworten in einem Go-Slice von Verbindungsstrukturen enthält. Jede Verbindungsstruktur enthält eine HTTP-Anfrage und eine HTTP-Antwort.
Problemübersicht
Bei einer gegebenen Textdatei mit HTTP-Anfragen und -Antworten besteht die Aufgabe darin, sie in einen []Connection-Slice zu analysieren. Die Funktion http.ReadRequest kann zum Parsen von Anforderungen verwendet werden. Es gibt jedoch keine integrierte Funktion zum Parsen von Antworten.
Implementierung
Die Lösung umfasst die folgenden Schritte:
Gepufferte Reader-Erstellung:
buf := bufio.NewReader(r)
wobei r das ist io.Reader-Instanz, die die Textdatei darstellt.
Iteratives Parsen:
for { req, err := http.ReadRequest(buf)
a. Verwenden Sie http. ReadRequest, um die nächste Anfrage im zu analysieren stream.
b. Auf EOF prüfen (err == io.EOF). Wenn erreicht, durchbrechen Sie die Schleife.
c.Wenn ein Fehler auftritt, geben Sie den analysierten Stream mit dem Fehler zurück.
Antwortanalyse:
resp, err := http.ReadResponse(buf, req)
Verwaltung des Antworttextes:
b := new(bytes.Buffer) io.Copy(b, resp.Body) resp.Body.Close() resp.Body = ioutil.NopCloser(b)
Stream-Population:
stream = append(stream, Connection{Request: req, Response: resp})
Schleifenende:
if err == io.EOF { break }
Beispiel Verwendung:
f, err := os.Open("/tmp/test.http") stream, err := ReadHTTPFromFile(f)
Fazit
Diese Methode analysiert effektiv HTTP-Anfragen und -Antworten aus einer Textdatei und füllt einen []Connection-Slice mit dem analysierte Daten. Es verarbeitet Antworttexte korrekt und stellt die korrekte Analyse mehrerer Anfragen und Antworten in einem Pipeline-Stream sicher.
Das obige ist der detaillierte Inhalt vonWie analysiert man HTTP-Anfragen und -Antworten aus einer Textdatei in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!