Heim > Backend-Entwicklung > Golang > Wie analysiert man HTTP-Anfragen und -Antworten aus Textdateien in Go?

Wie analysiert man HTTP-Anfragen und -Antworten aus Textdateien in Go?

Patricia Arquette
Freigeben: 2025-01-04 07:00:35
Original
323 Leute haben es durchsucht

How to Parse HTTP Requests and Responses from Text Files in Go?

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
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

Zusätzliche Hinweise

  • http.ReadRequest und http.ReadResponse kann wiederholt auf demselben gepufferten Reader aufgerufen werden, bis das Dateiende erreicht ist.
  • Um die Kompatibilität mit Ihrer Eingabe sicherzustellen Überprüfen Sie, ob die Datei den Content-Length-Header mit genauen Werten enthält.
  • Wenn Ihre Eingabedatei abgeschnittene Antworten enthält, wie im bereitgestellten Beispiel, können Sie die Verwendung von httputil.DumpResponse in Betracht ziehen, um eine umfassendere Darstellung sicherzustellen der Antwortinhalt.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage