Add EncodeXMLRequest
oleksii khliupin
7 years ago
3 | 3 | "bytes" |
4 | 4 | "context" |
5 | 5 | "encoding/json" |
6 | "encoding/xml" | |
6 | 7 | "io/ioutil" |
7 | 8 | "net/http" |
8 | 9 | "net/url" |
131 | 132 | r.Body = ioutil.NopCloser(&b) |
132 | 133 | return json.NewEncoder(&b).Encode(request) |
133 | 134 | } |
135 | ||
136 | // EncodeXMLRequest is an EncodeRequestFunc that serializes the request as a | |
137 | // XML object to the Request body. If the request implements Headerer, | |
138 | // the provided headers will be applied to the request. | |
139 | func EncodeXMLRequest(c context.Context, r *http.Request, request interface{}) error { | |
140 | r.Header.Set("Content-Type", "text/xml; charset=utf-8") | |
141 | if headerer, ok := request.(Headerer); ok { | |
142 | for k := range headerer.Headers() { | |
143 | r.Header.Set(k, headerer.Headers().Get(k)) | |
144 | } | |
145 | } | |
146 | var b bytes.Buffer | |
147 | r.Body = ioutil.NopCloser(&b) | |
148 | return xml.NewEncoder(&b).Encode(request) | |
149 | } |