質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

1回答

7494閲覧

Go: net/httpでリクエストして、HTTPステータスを取得したい。

hikouki

総合スコア10

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2017/03/26 10:23

golangで、net/httpを使ってGETリクエストした結果のHTTPステータスコードを取得したいです。

200の場合は、取得できるのですが、
500以上になると レスポンスが nil で、err が返ってきてしまいます。

err != nilの場合も、HTTPステータスコードを取得したいのですが、
良い方法ありますでしょうか?

実コード

req, err := http.NewRequest("GET", url, nil) if err != nil { log.Fatal(err) } req.Header.Set("User-Agent", "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1") res, err := http.DefaultClient.Do(req) if err != nil { // この場合も、res.StatusCodeを取得したい。 log.Fatal(err) } log.Print(res.StatusCode)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

そもそも該当のif文 はレスポンスが無い場合に errがセットされるんじゃないじゃないでしょうか。 つまりこの if文 では statusCodeの取得はできないと思いました。

if err != nil { // この場合も、res.StatusCodeを取得したい。 log.Fatal(err) }

500や503エラーが返ってきた場合は、レスポンスがある ので、上記if文の中は実行されませんでした。

go

1package main 2 3import ( 4 "log" 5 "net/http" 6) 7 8func main() { 9 10 // 希望のステータスコードを返してくれるサービスです 11 url := "http://ozuma.sakura.ne.jp/httpstatus/503" 12 req, err := http.NewRequest("GET", url, nil) 13 14 if err != nil { 15 log.Fatal(err) 16 } 17 18 req.Header.Set("User-Agent", "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1") 19 res, err := http.DefaultClient.Do(req) 20 21 if err != nil { 22 log.Fatal(err) 23 } 24 25 // 503 が返ってきても、上のif文はスキップされて、503がprintされます。 26 log.Print("------------") 27 log.Print(res.StatusCode) 28 log.Print("------------") 29}

投稿2017/03/26 11:28

tell_k

総合スコア2120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問