Goを使用して、外部WebサービスへのHTTP GET要求を行っています。何らかの理由で、応答の本文は常に空です。コンテンツの長さは常に0バイトです。応答ステータスコードは常に200ですが、Client.Doを呼び出すとエラーは返されません。このリクエストにはAuthorizationヘッダーが必要です。そのため、http.NewRequest/http.Client.Doパターンを使用してリクエストを送信しています(下記参照)。私は過去に似たようなリクエストをしてきましたが、ヘッダーを必要とするGETは使用しませんでした。これは原因ではないようですが、それが関連しているかどうかは疑問です。誰かがパターンを使って潜在的な問題を見つけたり、似たような経験をしていれば、本当に助けに感謝します。Golangでhttp.Client.Doを使用した空のHTTP応答
ありがとうございます。
if req, err := http.NewRequest("GET", "https://api.molt.in/v1/orders/11111111/items", nil); err != nil {
return nil, err
} else {
client := &http.Client{}
req.Header.Add("Authorization", "secretToken")
if resp, err := client.Do(req); err != nil {
return nil, err
} else {
defer resp.Body.Close()
return readBody(resp.Body)
}
}
エラーがなく、応答が200の場合、何が問題なのですか?身体を持っているという応答は必要ありません。ところで、あなたは一般的に、あなたが早期に戻るという選択肢を持っているときは、ネストされたif-elseを避けたい。ほとんどの人はこう書いています:https://play.golang.org/p/q0x8cNvrYw – JimB
'resp.ContentLength'をチェックしましたか? 'readBody'は何をしますか? –
curlで同じリクエストを実行した場合の結果はどうなりますか? – Zoyd