code: func (c clientRequest) Post(client *Client, request *soap.SoapMessage) (string, error) {
  	httpClient := &http.Client{Transport: c.transport}
  
  	req, err := http.NewRequest("POST", client.url, strings.NewReader(request.String()))
  	if err != nil {
  		return "", fmt.Errorf("impossible to create http request %s", err)
  	}
  	req.Header.Set("Content-Type", soapXML+";charset=UTF-8")
  	req.SetBasicAuth(client.username, client.password)
  	resp, err := httpClient.Do(req)
  	if err != nil {
  		return "", fmt.Errorf("unknown error %s", err)
  	}
  
  	body, err := body(resp)
  	if err != nil {
  		return "", fmt.Errorf("http response error: %d - %s", resp.StatusCode, err.Error())
  	}
  
  	// if we have different 200 http status code
  	// we must replace the error
  	defer func() {
  		if resp.StatusCode != 200 {
  			body, err = "", fmt.Errorf("http error %d: %s", resp.StatusCode, body)
  		}
  	}()
  
  	return body, err
  }
docs: // Post make post to the winrm soap service