如何使用gowsdl库使soap客户端调用服务支持soap协议?

我正在使用库https://github.com/hooklift/gowsdl 创建一个soap客户端,以调用服务并从该服务接收响应返回。服务器是http://www.dneonline.com/calculator.asmx?wsdl

我使用Chrome上的Wizdler扩展来查看端点、SOAP操作和支持的http方法:https://i.stack.imgur.com/aJrXU.png

Request XML

https://i.stack.imgur.com/V0UcL.png

Response XML

https://i.stack.imgur.com/OXoyh.png

/src/soap_client.go

package src

import (
    "encoding/xml"
    "github.com/hooklift/gowsdl/soap"
)

type AddRequest struct {
    XMLName xml.Name `xml:"http://www.dneonline.com/calculator.asmx Calculator.CalculatorSoap"`

    IntA int `xml:"intA"`
    IntB int `xml:"intB"`
}

type AddResponse struct {
    XMLName xml.Name `xml:"http://www.dneonline.com/calculator.asmx Calculator.CalculatorSoap"`

    AddResponse AddResult `xml:"AddResponse"`
}

type AddResult struct {
    AddResult int `xml:"AddResult"`
}

type ISoapClient interface {
    Add(request *AddRequest) (*AddResponse, error)
}

type SoapClient struct {
    client *soap.Client
}

func NewSoapClient(client *soap.Client) *SoapClient {
    return &SoapClient{
        client: client,
    }
}

func (sap *SoapClient) Add(request *AddRequest) (*AddResponse, error) {
    response := new(AddResponse)
    err := sap.client.Call("Add", request, response)
    if err != nil {
        return nil, err
    }

    return response, nil
}

main.go

package main

import (
    "awesomeProject/src"
    "fmt"
    "github.com/hooklift/gowsdl/soap"
)

func main() {
    client := soap.NewClient(
        "http://www.dneonline.com/calculator.asmx",
    )
    request := src.AddRequest{
        IntA: 1,
        IntB: 1,
    }
    service := src.NewSoapClient(client)
    res, err := service.Add(&request)

    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Print(res.AddResponse)
}

我想在此服务的Calculator端点中使用Add操作。因此,我尝试了sho.client.Call(“”,请求,响应),但没有用。我该怎么做?谢谢。

当调用上面的代码时出错:

System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: Add. at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message) at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response) at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

同求