mirror of
https://github.com/foomo/soap.git
synced 2025-10-16 12:45:36 +00:00
improved http header handling, exposed new method on server WriteHeader
This commit is contained in:
parent
520c809155
commit
dd9aa50d0a
@ -94,15 +94,16 @@ func (c *Client) Call(soapAction string, request, response interface{}) (httpRes
|
|||||||
envelope.Body.Content = request
|
envelope.Body.Content = request
|
||||||
|
|
||||||
xmlBytes, err := c.Marshaller.Marshal(envelope)
|
xmlBytes, err := c.Marshaller.Marshal(envelope)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
// Adjust namespaces for SOAP 1.2
|
// Adjust namespaces for SOAP 1.2
|
||||||
if c.SoapVersion == SoapVersion12 {
|
if c.SoapVersion == SoapVersion12 {
|
||||||
tmp := string(xmlBytes)
|
tmp := string(xmlBytes)
|
||||||
tmp = strings.Replace(tmp, NamespaceSoap11, NamespaceSoap12, -1)
|
tmp = strings.Replace(tmp, NamespaceSoap11, NamespaceSoap12, -1)
|
||||||
xmlBytes = []byte(tmp)
|
xmlBytes = []byte(tmp)
|
||||||
}
|
}
|
||||||
if err != nil {
|
//log.Println(string(xmlBytes))
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
//l("SOAP Client Call() => Marshalled Request\n", string(xmlBytes))
|
//l("SOAP Client Call() => Marshalled Request\n", string(xmlBytes))
|
||||||
|
|
||||||
@ -185,7 +186,7 @@ func (c *Client) Call(soapAction string, request, response interface{}) (httpRes
|
|||||||
l("This is not a SOAP-Message: \n" + string(rawbody))
|
l("This is not a SOAP-Message: \n" + string(rawbody))
|
||||||
return nil, errors.New("This is not a SOAP-Message: \n" + string(rawbody))
|
return nil, errors.New("This is not a SOAP-Message: \n" + string(rawbody))
|
||||||
}
|
}
|
||||||
|
l("RAWBODY\n", string(rawbody))
|
||||||
}
|
}
|
||||||
|
|
||||||
// We have an empty body or a SOAP body
|
// We have an empty body or a SOAP body
|
||||||
|
|||||||
14
server.go
14
server.go
@ -108,9 +108,19 @@ func (s *Server) handleError(err error, w http.ResponseWriter) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WriteHeader first sets header like content-type and then writes the header
|
||||||
|
func (s *Server) WriteHeader(w http.ResponseWriter, code int) {
|
||||||
|
setContentType(w, s.ContentType)
|
||||||
|
w.WriteHeader(code)
|
||||||
|
}
|
||||||
|
|
||||||
|
func setContentType(w http.ResponseWriter, contentType string) {
|
||||||
|
w.Header().Set("Content-Type", contentType)
|
||||||
|
}
|
||||||
|
|
||||||
func addSOAPHeader(w http.ResponseWriter, contentLength int, contentType string) {
|
func addSOAPHeader(w http.ResponseWriter, contentLength int, contentType string) {
|
||||||
w.Header().Add("Content-Type", contentType)
|
setContentType(w, contentType)
|
||||||
w.Header().Add("Content-Length", fmt.Sprint(contentLength))
|
w.Header().Set("Content-Length", fmt.Sprint(contentLength))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user