Example

  1. func DoRequest(req *http.Request) (MyResponse, error) {
  2. client := &http.Client{}
  3. resp, err := client.Do(req)
  4. if resp != nil {
  5. defer resp.Body.Close()
  6. }
  7. if err != nil {
  8. return nil, err
  9. }
  10. body, err := ioutil.ReadAll(resp.Body)
  11. if err != nil {
  12. return nil, err
  13. }
  14. response := MyResponse{}
  15. response.Header = resp.Header
  16. ...
  17. response.Body = body
  18. return response, nil
  19. }

Execute flow

overview

client_Do (2).svg

send()

send (2).svg

RoundTrip()

  1. func (t *Transport) RoundTrip(req *Request) (*Response, error) {
  2. return t.roundTrip(req)
  3. }