Use nil interface{} instead of struct{} for empty requests/responses.

The XML encoder doesn't like receiving struct{}.
This commit is contained in:
John Beisley
2014-01-06 19:47:57 +00:00
parent d8237236d8
commit a8a8987980
3 changed files with 62 additions and 23 deletions

View File

@ -64,8 +64,10 @@ func (client *SOAPClient) PerformAction(actionNamespace, actionName string, inAc
return responseEnv.Body.Fault
}
if err := xml.Unmarshal(responseEnv.Body.RawAction, outAction); err != nil {
return err
if outAction != nil {
if err := xml.Unmarshal(responseEnv.Body.RawAction, outAction); err != nil {
return err
}
}
return nil
@ -86,9 +88,11 @@ func newSOAPEnvelope() *soapEnvelope {
func encodeRequestAction(inAction interface{}) ([]byte, error) {
requestBuf := new(bytes.Buffer)
requestBuf.WriteString(soapPrefix)
requestEnc := xml.NewEncoder(requestBuf)
if err := requestEnc.Encode(inAction); err != nil {
return nil, err
if inAction != nil {
requestEnc := xml.NewEncoder(requestBuf)
if err := requestEnc.Encode(inAction); err != nil {
return nil, err
}
}
requestBuf.WriteString(soapSuffix)
return requestBuf.Bytes(), nil