4 minutes reading time
最近在实现一个功能时需要使用第三方的接口,由于第三方只提供了一个 WSDL 文件的链接,于是研究了 golang 如何解析 WSDL 并调用相应接口, 本文就是介绍 WSDL 和 go 如何解析并调用。
WSDL 是 Web Services Description Language(Web服务描述语言)的缩写。它是一种用于描述基于Web服务的通信协议和消息格式的XML格式语言。
WSDL 被广泛用于描述Web服务的接口和操作。它定义了Web服务所提供的功能、方法、参数、数据类型以及与服务进行交互的方式。通过WSDL文件,客户端应用程序可以了解如何与特定的Web服务进行通信。
WSDL文件通常包含以下几个主要部分:
使用WSDL,开发人员可以生成客户端代码,使其能够与Web服务进行交互。客户端可以根据WSDL文件了解Web服务的结构和可用方法,以便正确地构造请求和解析响应。
总之,WSDL是一种用于描述Web服务接口和操作的语言,它提供了一种标准化的方式来描述和访问Web服务。
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
。
解析完毕会生成相应的客户端文件,我们只要通过生成的客户端链接服务即可执行相应的方法。
code:
package main
import (
"adx/myservice"
"fmt"
"github.com/hooklift/gowsdl/soap"
"golang.org/x/oauth2"
"log"
)
func main()
在对 soap 库的简单尝试后,发现了一些问题:
1 生成的 go 代码会有问题,会出现结构体中存在相同名称字段的问题 2 生成的方法字段不够规范
相比其它语言原生内置的wsdl解析库, go语言目前能够满足需求的库并不多,所以不推荐使用 go 解析 wsdl.