MasaのITC Life

夢は起業家!全てにおいて凡人だけど頑張ることだけはいっちょ前!

プログラミング

Go言語でHTTPリクエスト(GET)のレスポンスを表示させる!

投稿日:2020年5月15日 更新日:


Go言語でGETをGoogleのサーバに送って、

返ってきたレスポンスを表示させましょう。



Go言語でソケットプログラミングを

やってみたいと思った方は、

是非参考にして下さい。



まずは、実行結果とプログラムです。


ソース



実行結果


上から順番に、

ステータスライン
リスポンスヘッダー
メッセージボディ



HTTPリスポンスがしっかりと表示されていますね。



Go言語でGETリクエストを送る方法



ソースの構造はC++と似ています。

サーバに接続して送信データに、

「GET / HTTP/2.0」


と指定するだけです。



実行環境はwindowsですので、

CR, LFの付け忘れにも注意です。



あとは受信データを読み込んで、

printfで標準出力するだけです。




それでは上から順番に解説します。

Dial関数を使うためにnetを
printf系の関数を使うためにfmt
read系の関数を使うためにbufioを

それぞれインポートします。


func Dial(network, address string) (Conn, error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)
func NewReader(rd io.Reader) *Reader
func (b *Reader) Read(p []byte) (n int, err error)


【Dial関数】

TCPかUDPプロトコルと、

接続先ホストを指定します。



プロトコルの指定には、

TCP、TCP4(IPv4のみ)、TCP6(IPv6のみ)

UDP、UDP4(IPv4のみ)、TCP6(IPv6のみ)

が選択肢としてあります。



ホストの指定には、

FQDNもしくはIPアドレス、

併せてポート番号も一緒に指定します。




【NewReader関数】

Dial関数の戻り値をconnという名前の

Conn型変数に入れています。

変数の名前と変数の型名が

同じ名前なので気を付けて下さい。


データを読み込むために

Read関数を使いますが、

Conn型のままでは使えないので、

Read型に変換させます。(イメージ)

NewReaderはそのための関数です。




【Readメソッド】

Read型変数に対して使います。

仮引数にByte型配列を使うので、

適当なサイズのByte型を作成します。

読み込んだ内容は配列に入れ、

格納したバイト数を返します。





関数の簡易的な説明は以上です。



なお受信データの読み込みは、

一行(ステータスライン)だけにしたい場合は、

Readメソッドではなく、

ReadStringメソッドを使います。




最後まで読んでいただきありがとうございました。


【参考文献】
https://golang.org/pkg/net/
https://golang.org/pkg/bufio/
https://golang.org/pkg/fmt/


-プログラミング

Copyright© MasaのITC Life , 2023 All Rights Reserved Powered by STINGER.