在go语言中如何解析WSDL并调用对应的第三方接口
Go  /  管理员 发布于 1年前   863
WSDL是Web Services Description Language(Web服务描述语言)的缩写。它是一种用于描述基于Web服务的通信协议和消息格式的XML格式语言。
WSDL 被广泛用于描述Web服务的接口和操作。
它定义了Web服务所提供的功能、方法、参数、数据类型以及与服务进行交互的方式。
通过WSDL文件,客户端应用程序可以了解如何与特定的Web服务进行通信。
WSDL文件通常包含以下几个主要部分:
服务定义:描述了Web服务的名称、命名空间和位置。
类型定义:定义了Web服务中使用的数据类型,例如字符串、整数等。
消息定义:定义了Web服务中使用的消息格式,包括输入和输出消息。
操作定义:定义了Web服务的操作或方法,包括输入和输出消息以及相关的参数。
绑定定义:定义了Web服务使用的通信协议和消息格式,例如SOAP(Simple Object Access Protocol)和HTTP(Hypertext Transfer Protocol)。
服务定义:将服务、绑定和端口等部分组合在一起,定义了Web服务的完整描述。
使用WSDL,开发人员可以生成客户端代码,使其能够与Web服务进行交互。客户端可以根据WSDL文件了解Web服务的结构和可用方法,以便正确地构造请求和解析响应。
总之,WSDL是一种用于描述Web服务接口和操作的语言,它提供了一种标准化的方式来描述和访问Web服务。
gowsdl
go语言如何解析 wsdl呢,我们使用 gowsdl 来解析 wsdl ,生成相应的 golang 代码。
安装
go install github.com/hooklift/gowsdl/cmd/gowsdl@latest
生成代码
使用命令
gowsdl -o myservice.go http://www.example.com/myservice?wsdl
生成代码。
如果网络情况不好,我们也可以将 WSDL 文件下载下来解析 gowsdl -o xx.go a.xml。
解析完毕会生成相应的客户端文件,我们只要通过生成的客户端链接服务即可执行相应的方法。
代码示例:
package main
import (
"adx/myservice"
"fmt"
"github.com/hooklift/gowsdl/soap"
"golang.org/x/oauth2"
"log"
)
func main() {
client := soap.NewClient("https://ads.xxx?wsdl", soap.WithHTTPHeaders(map[string]string{
"Authorization": fmt.Sprintf("Bearer %s", xxxx),
}))
service := myservice.NewxxServiceInterface(client)
ReportableType := myservice.xx
type_ := myservice.xx
reply, err := service.xx(&myservice.xx{
Keys: []*myservice.xx{{
Name: "test111",
DisplayName: "test111",
Type_: &type_,
ReportableType: &ReportableType,
}},
})
if err != nil {
log.Fatal(err)
return
}
log.Println(reply)
}
最后
在对 soap 库的简单尝试后,发现了一些问题:
1 生成的 go 代码会有问题,会出现结构体中存在相同名称字段的问题
2 生成的方法字段不够规范
相比其它语言原生内置的wsdl解析库, go语言目前能够满足需求的库并不多,所以不推荐使用 go 解析 wsdl.
参考
https://github.com/hooklift/gowsdl
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号