HTTP-Anfragen und -Antworten aus einer Textdatei in Go analysieren
In Go umfasst das Parsen von HTTP-Anfragen und -Antworten aus einer Textdatei die Nutzung des Builds -in HTTP-Analysefunktionen. Um dies zu erreichen, kann man den folgenden Ansatz verwenden:
func ReadHTTPFromFile(r io.Reader) ([]Connection, error) { // Establish a new buffered reader to process the input. buf := bufio.NewReader(r) // Define a slice that will store HTTP connection information. stream := make([]Connection, 0) // Loop indefinitely to parse request and response pairs until we reach the end of the file. for { // Attempt to parse an HTTP request using ReadRequest. req, err := http.ReadRequest(buf) // Check if we have reached the end of the file or an error occurred. if err == io.EOF { // Break out of the loop since we have reached the end of the file. break } else if err != nil { // Log the error and return the partially parsed stream. log.Println("Error parsing HTTP request:", err) return stream, err } // Now that we have a request, we need to parse the corresponding HTTP response. resp, err := http.ReadResponse(buf, req) // Check for any errors while parsing the response. if err != nil { // Log the error and return the partially parsed stream. log.Println("Error parsing HTTP response:", err) return stream, err } // Copy the response body to a new buffer to preserve it. var b bytes.Buffer io.Copy(&b, resp.Body) // Close the original response body and replace it with a new, non-closing one. resp.Body.Close() resp.Body = ioutil.NopCloser(&b) // Add the connection to our stream. stream = append(stream, Connection{Request: req, Response: resp}) } // Return the parsed stream. return stream, nil }
Mit dieser Funktion können Sie eine Datei mit HTTP-Anfragen und -Antworten öffnen und diese analysieren. Zum Beispiel:
func main() { // Open a file for reading. file, err := os.Open("http.txt") if err != nil { log.Fatal(err) } // Parse the HTTP requests and responses from the file. stream, err := ReadHTTPFromFile(file) if err != nil { log.Fatal(err) } // Dump a representation of the parsed requests and responses for inspection. for _, c := range stream { reqDump, err := httputil.DumpRequest(c.Request, true) if err != nil { log.Fatal(err) } respDump, err := httputil.DumpResponse(c.Response, true) if err != nil { log.Fatal(err) } fmt.Println(string(reqDump)) fmt.Println(string(respDump)) } }
Dieser Code liest den Inhalt der Datei „http.txt“, analysiert die HTTP-Anfragen und -Antworten und gibt ihre Darstellung zur Überprüfung aus. Mit den von der Go-Standardbibliothek bereitgestellten HTTP-Parsing-Funktionen können Sie Anforderungen und Antworten aus einem Textdateistream extrahieren und bearbeiten.
Das obige ist der detaillierte Inhalt vonWie kann ich HTTP-Anfragen und -Antworten aus einer Textdatei in Go analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!