Zugriff auf HTTP-Antworten als String in Go
Beim Parsen der Antwort einer Webanfrage kann der Zugriff darauf als String problematisch sein. Betrachten Sie den folgenden Code:
resp, err := http.Get("http://google.hu/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body)
Während der Code den Antworttext erfolgreich abruft, versuchen Sie, ihn als Zeichenfolge zu durchlaufen, indem Sie for i:= 0; ich < len(körper); i { fmt.Println( body[i] ) } liefert numerische Werte anstelle von Zeichen.
Der Schlüssel zum Zugriff auf die Antwort als String liegt in einer einfachen Konvertierung:
bs := string(body)
Dies Bei der Konvertierung wird der Byte-Slice-Körper als Folge von Unicode-Codepunkten behandelt und eine entsprechende Zeichenfolge erstellt. Nach der Konvertierung können Sie bs wie jede andere Zeichenfolge bearbeiten.
Der folgende Code zeigt beispielsweise die Konvertierung und die anschließende Zeichenfolgenmanipulation:
var client http.Client resp, err := client.Get(url) if err != nil { log.Fatal(err) } defer resp.Body.Close() if resp.StatusCode == http.StatusOK { bodyBytes, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } bodyString := string(bodyBytes) fmt.Println(bodyString) }
Diese Konvertierung hebt den Unterschied zwischen Bytes und Zeichenfolgen hervor in Go. Strings sind unveränderliche Folgen von Unicode-Codepunkten, während Byte-Slices veränderliche Folgen von Rohbytes sind. Durch die Konvertierung von einem Byte-Slice in eine Zeichenfolge wird effektiv eine neue Zeichenfolge erstellt, die die durch die Bytes codierte Zeichenfolge darstellt.
Das obige ist der detaillierte Inhalt vonWie greife ich in Go auf einen HTTP-Antworttext als String zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!