我正在使用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
声明变量。上面xml:"http://service.jaxws.journaldev.com getAllPersons"
中的第3个值struct
是什么?
答案 0 :(得分:2)
以下是我用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在评论中提到答案。
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