I am using an http client to get a json body, and read it to a byte array like
client := new(http.Client)
client.Timeout = time.Second * 10
GetJobJson, err := client.Get(joblocation.String()) //where joblocation is of type *url.Url
if err != nil {
errorlog.Err.Println("Error getting job from", joblocation.String(), err)
return false, http.StatusBadRequest, nil
}
buff := make([]byte, GetJobJson.ContentLength)
length, err := GetJobJson.Body.Read(buff) //This returns an EOF error
if err != nil {
errorlog.Err.Println("Error reading request body of length", length, "vs contentlength", GetJobJson.ContentLength, err)
return false, http.StatusBadRequest, nil
}
In the above code, GetJobJson.Body
is of type io.ReadCloser
, which implements Reader
, having Read
method, which I am using here as
length, err := GetJobJson.Body.Read(buff)
But since I am handling error here, it is returning an error which says EOF.
The http endpoint to where I am sending the request is running an apache server, mentioning it here since I am not sure if it matters.
If I am not handling the error, I get the complete json body, which is there in the remote server, and the program continues to work as expected.
What is the best way to handle this? Is the Read
method that I use, is bad for this situation? Please advise.
Thank you.