Go で文字列として HTTP 応答にアクセスする
Web リクエストの応答を解析する場合、文字列としてアクセスすると問題が発生する可能性があります。次のコードを考えてみましょう。
resp, err := http.Get("http://google.hu/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body)
コードは応答本文を正常にフェッチし、for i:= 0; を使用してそれを文字列として反復処理しようとします。私は<レン(ボディ); i { fmt.Println( body[i] ) } は、文字の代わりに数値を生成します。
文字列として応答にアクセスするための鍵は、単純な変換にあります。
bs := string(body)
これ変換では、バイト スライス本体が Unicode コード ポイントのシーケンスとして扱われ、対応する文字列が作成されます。変換後は、他の文字列と同様に bs を操作できます。
たとえば、次のコードは、変換とその後の文字列操作を示しています。
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) }
この変換は、バイトと文字列の区別を強調しています。囲碁で。文字列は Unicode コード ポイントの不変シーケンスですが、バイト スライスは生のバイトの可変シーケンスです。バイト スライスから文字列への変換により、バイトによってエンコードされた文字のシーケンスを表す新しい文字列が効果的に作成されます。
以上がGo で HTTP 応答本文に文字列としてアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。