Mengakses Respons HTTP sebagai Rentetan dalam Go
Apabila menghuraikan respons permintaan web, mengaksesnya sebagai rentetan boleh menjadi masalah. Pertimbangkan kod berikut:
resp, err := http.Get("http://google.hu/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body)
Sementara kod berjaya mengambil badan tindak balas, cuba untuk melelaran padanya sebagai rentetan menggunakan untuk i:= 0; i < len(badan); i { fmt.Println( body[i] ) } menghasilkan nilai berangka dan bukannya aksara.
Kunci untuk mengakses respons sebagai rentetan terletak pada penukaran mudah:
bs := string(body)
Ini penukaran menganggap badan kepingan bait sebagai urutan titik kod Unicode dan mencipta rentetan yang sepadan. Setelah ditukar, anda boleh memanipulasi bs seperti mana-mana rentetan lain.
Sebagai contoh, kod berikut menunjukkan penukaran dan manipulasi rentetan seterusnya:
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) }
Penukaran ini menyerlahkan perbezaan antara bait dan rentetan dalam Go. Rentetan ialah jujukan tidak boleh ubah bagi titik kod Unicode, manakala hirisan bait ialah jujukan bait mentah yang boleh diubah. Penukaran daripada kepingan bait kepada rentetan dengan berkesan mencipta rentetan baharu yang mewakili jujukan aksara yang dikodkan oleh bait.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Badan Respons HTTP sebagai Rentetan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!