HTTP-Anfragen und -Antworten aus Textdateien in Go analysieren
Beim Arbeiten mit HTTP-Pipeline-Streams, die in Textdateien gespeichert sind, werden die Anfragen und Antworten analysiert ist entscheidend für die Weiterverarbeitung. In diesem Artikel untersuchen wir, wie Sie dies in Go mithilfe der Funktionen http.ReadRequest und http.ReadResponse effektiv erreichen können.
Problem
Gegeben ist eine Textdatei mit Eine Folge von HTTP-Anfragen und -Antworten. Das Ziel besteht darin, diese Komponenten in eine Datenstruktur, insbesondere einen Verbindungsabschnitt, zu analysieren Instanzen.
Lösung
Die Nutzung der oben genannten Funktionen bietet einen unkomplizierten Ansatz zum Parsen von Anfragen und Antworten aus der Textdatei:
import ( "bufio" "bytes" "fmt" "io" "io/ioutil" "log" "net/http" "net/http/httputil" "os" ) type Connection struct { Request *http.Request Response *http.Response } func ReadHTTPFromFile(r io.Reader) ([]Connection, error) { buf := bufio.NewReader(r) stream := make([]Connection, 0) for { req, err := http.ReadRequest(buf) if err == io.EOF { break } if err != nil { return stream, err } resp, err := http.ReadResponse(buf, req) if err != nil { return stream, err } // Save response body b := new(bytes.Buffer) io.Copy(b, resp.Body) resp.Body.Close() resp.Body = ioutil.NopCloser(b) stream = append(stream, Connection{Request: req, Response: resp}) } return stream, nil }
Verwendung
Um diese Funktion zu nutzen, lesen Sie einfach die Eingabetextdatei in einen Reader ein und rufen Sie auf ReadHTTPFromFile. Die Funktion gibt einen Abschnitt von Verbindungsinstanzen zurück, wobei jede Verbindung eine Anfrage und die zugehörige Antwort darstellt.
f, err := os.Open("/tmp/test.http") if err != nil { log.Fatal(err) } defer f.Close() stream, err := ReadHTTPFromFile(f) if err != nil { log.Fatalln(err) }
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie analysiert man HTTP-Anfragen und -Antworten aus Textdateien in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!