我正在使用gowsdl
在Go中使用SOAP
请求。我得到了WSDL
并使用它生成了代码。在自动生成的代码中,它生成了存根,下面提到了一些代码片段。
-
我必须进行
SOAP
调用,并且必须GetAllPersons struct
作为服务的输入传递。请帮我怎么做?我有请求xml
但不知道如何在GetAllPersons struct
中更新它?persons, err := service.GetAllPersons(request) type GetAllPersons struct { XMLName xml.Name `xml:"http://service.jaxws.journaldev.com getAllPersons"` }
-
根据 Go 规范,使用 sybtax
VariableName Type
声明一个变量。上述struct
中xml:"http://service.jaxws.journaldev.com getAllPersons"
的第 3 个值是什么?
下面是我想出的代码,用于使用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?: %tn", persons.GetAllPersonsReturn[0].Name)
fmt.Printf("Alive?: %tn", persons.GetAllPersonsReturn[1].Name)
fmt.Printf("Alive?: %tn", persons.GetAllPersonsReturn[0].Id)
fmt.Printf("Alive?: %tn", persons.GetAllPersonsReturn[1].Id)
fmt.Printf("Alive?: %tn", persons.GetAllPersonsReturn[0].Age)
fmt.Printf("Alive?: %tn", 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在评论中提到答案。 These strings after the type are called tags (see golang.org/ref/spec#Struct_types) and are used typically during (un)marshalling from serialisation formats like xml