在Go中发出SOAP请求
答
我认为没有。
首先,有两个文件描述肥皂—所谓的“SOAP注”,这是正式并不是一个标准,而是广泛地称为“SOAP 1.0”,另一种,这是的标准开始通常被称为SOAP 1.1。即使它们看起来表面上相同,它们也不兼容。
在另一方面,SOAP本身—作为什么 客户端发送,什么服务器—回应很简单, 而事实上制作一个简单的SOAP封装XML编码(使客户端调用)和 解包(解封装服务器的响应)很简单。
我想强调的是:这两个SOAP标准实际上并不处理 HTTP的SOAP被明确定义为传输不定 (它因此从同样的问题,剩下的范确实遭遇:大家 认为它是关于HTTP),而Go的标准库具有优秀的支持HTTP的 ,所以SOAP编码/解码层看起来好像很薄。
考虑到这些因素,我个人,甚至没有开始 取决于第三方包SOAP在每个我需要 调用一些通过SOAP的情况下,写了必要的代码自己; 我刚刚检查了我最后一次需要 来执行SOAP 1.2调用,SOAP编码器/解码器最后成为Go代码(不包括测试)的171行 。
所以我会说只是自己滚。
注意,虽然这一切都那么简单只有当你的服务器不需要 东西出错使用—例如是可怕的WS-Security扩展 需要XML的特殊格式发送, 计算过它的加密哈希,数字签字 和所有这些东西; Go还没有处理这个问题。
这同样适用于WSDL规范或XSD模式。 IIUC,目前没有足够质量的工具,它会在给定WSDL 文档或XSD模式时为您生成 类型层次结构和SOAP端点客户端存根。