我正在使用Go向外部Web服务发出HTTP GET请求。由于某种原因,反应的主体总是空的;内容长度始终为零字节。但是,响应状态代码始终为200,并且对Client.Do的调用不会返回任何错误。该请求需要一个Authorization标头,因此我使用http.NewRequest / http.Client.Do模式提交请求,如下所示。我过去曾做过与此类似的请求,但从未使用过需要标头的GET。这似乎不太可能是原因,但我想知道它是否可能有关系。如果有人能够发现所使用模式的任何潜在问题,或者也许有类似的经历,我真的很感激任何帮助。
谢谢。
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)
}
}
答案 0 :(得分:1)
我终于发现了问题的根源。它与正在提出的请求或收到的响应无关。它与解析响应有关。
我正在使用bufio.NewScanner.Text尝试将响应主体转换为字符串。将此调用替换为ioutil.ReadAll,将输出我最初期望的字符串。
感谢您的所有帮助,并对误导性问题道歉。