ホームページ > バックエンド開発 > Golang > Go で HTTP 応答本文に文字列としてアクセスするにはどうすればよいですか?

Go で HTTP 応答本文に文字列としてアクセスするにはどうすればよいですか?

DDD
リリース: 2024-12-08 07:24:16
オリジナル
373 人が閲覧しました

How Do I Access an HTTP Response Body as a String in Go?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート