go - 在 Go 中发出 SOAP 请求

标签 go

我在 Stack Overflow 上看到了其他几个类似的问题,但它们相当旧/可能已经过时了,所以我想知道是否有任何新的包或方法可以在 Go 中发出 SOAP 请求。谢谢!

最佳答案

我认为没有。

首先,有两个描述 SOAP 的文档 — 所谓的“SOAP Note”,官方不是标准,但被广泛称为“SOAP 1.0”,另一个文档是 标准,通常称为 SOAP 1.1。尽管表面上看起来相同,但它们并不兼容。

另一方面,SOAP 本身——作为什么的 XML 编码 客户端发送,服务器响应的内容很简单, 事实上,制作一个简单的 SOAP 包装器(以进行客户端调用)并且 解包器(解封装服务器的响应)很简单。

我想强调这一点:两个 SOAP 标准实际上并不涉及 HTTP 作为 SOAP 被明确定义为与传输无关 (因此,它遇到了与 ReST 范式相同的问题:每个人 认为这是关于 HTTP 的),并且 Go 的标准库功能非常出色 支持HTTP,所以SOAP编码/解码层显得相当 薄。

出于这些考虑,我个人甚至懒得开始 在我需要的每种情况下取​​决于 SOAP 的第 3 方包 通过 SOAP 调用某些内容并自己编写必要的代码; 我刚刚检查过我上次需要的时间 为了进行 SOAP 1.2 调用,SOAP 编码器/解码器最终有 171 行 Go 代码(不包括测试)。

所以我建议你自己动手。

请注意,只有当您的服务器不需要时,这一切才那么简单 一些使用不当的东西——例如令人畏惧的 WS-Security 扩展 这需要发送特殊格式的 XML, 计算其加密哈希值,并对它们进行数字签名 以及所有这些东西;到目前为止,Go 中还没有任何东西可以处理这个问题。

这同样适用于 WSDL 规范或 XSD 架构。 IIUC,目前没有足够质量的工具可以生成 给定 WSDL 的类型层次结构和 SOAP 端点客户端 stub 文档或 XSD 架构。

关于go - 在 Go 中发出 SOAP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42430892/

相关文章:

mongodb - 打印 mongoDB Collection Golang 中的所有记录

go - 是否可以定义一个返回接口(interface)的无名函数?

转到错误 : Cannot use argument (type []string) as type string in argument

arrays - 如何使用Go将这个JSON数组解码到结构 slice 中?

go - 如何将值重新分配为 map 输出的空值

go - 使用Go语法的函数组合

google-app-engine - Martini oauth2callback适配GAE后重定向到oauth2error

go - 更新嵌套模板 Golang

Golang 用于范围指针

sql - 无法将日期时间纪元转换为仅日期纪元格式