xml - 使用 gowsdl 进行 SOAP 调用

标签 xml web-services go soap

我正在使用 gowsdl 在 Go 中使用 SOAP 请求。我得到了 WSDL 并使用它生成了代码。在自动生成的代码中,它生成了 stub ,下面提到了一些代码片段。

  1. 我必须进行 SOAP 调用,并且必须将 GetAllPersons struct 作为输入传递给服务。请帮帮我,我们该怎么做?我有请求 xml 但不知道如何在 GetAllPersons struct 中更新它?

    persons, err := service.GetAllPersons(request)
    
    type GetAllPersons struct {
        XMLName xml.Name `xml:"http://service.jaxws.journaldev.com getAllPersons"`
    }
    
  2. 并且根据 Go 规范,使用 sybtax VariableName Type 声明变量。上面 struct 中的第三个值 xml:"http://service.jaxws.journaldev.com getAllPersons" 是什么?

最佳答案

下面是我用 gowsdl 生成的代码想出的代码。

main(){
    basicauth := personService.BasicAuth{"",""}
    service := personService.NewPersonServiceImpl("", false, &basicauth)

    persons, err := service.GetAllPersons(&personService.GetAllPersons{})

    if err != nil {
        panic(err)
    }
    fmt.Println(persons)
    fmt.Printf("Alive?: %t\n", persons.GetAllPersonsReturn[0].Name)
    fmt.Printf("Alive?: %t\n", persons.GetAllPersonsReturn[1].Name)
    fmt.Printf("Alive?: %t\n", persons.GetAllPersonsReturn[0].Id)
    fmt.Printf("Alive?: %t\n", persons.GetAllPersonsReturn[1].Id)
    fmt.Printf("Alive?: %t\n", persons.GetAllPersonsReturn[0].Age)
    fmt.Printf("Alive?: %t\n", persons.GetAllPersonsReturn[1].Age)
    fmt.Printf(persons.GetAllPersonsReturn[0].Name)

    request := &personService.AddPerson{P: &personService.Person{Age: 24, Name: "Govinda", Id: 55555555}}
    trial, err := service.AddPerson(request)
    if err != nil {
        panic(err)
    }
}

对于第二个问题,感谢 Volker 在评论中提到答案。 类型后的这些字符串称为标签(请参阅 golang.org/ref/spec#Struct_types),通常在从序列化格式(如 xml)进行(取消)编码期间使用

关于xml - 使用 gowsdl 进行 SOAP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47300735/

相关文章:

iphone - 从 iPhone 中的核心数据生成和解析 XML

java - JAX-RS Jersey XML <-> java.util.List

web-services - 如何将 html5 主题上传到我的网站

java - 如何处理 SOAP 调用中的方法及其参数

http - 如何在 net/http 中为 HTTP2 配置帧大小

使用 Go 的 OpenStack 的 .htaccess 文件位置

java - 创建带换行符的 XML 文件

xml - 如何使用 XSL 中的每个组

java - 创建类路径资源 META-INF/cxf/cxf.xml 中定义的名称为 'cxf' 的 bean 时出错

linq - Go 泛型是否允许 LINQ to Objects 等效?