SOAP是一种基于XML的“简单”协议,它在10年前一直很受欢迎,以基于JSON协议的Restful API比现在很受欢迎。
如果项目的开发语言为.NET或Java,则可以,因为IDE具有方便的构建功能,可以分析SOAP服务的WSDL文件,并自动生成客户端的相关代码。但是如果您使用Golang,则,这很麻烦。
让我们谈谈肥皂或麻烦的地方之间的区别。
以下是请求主体的示例。该XML必须指定特定的命名空间。API的验证密钥信息也写在请求主体中。
通常,零件通常更复杂。如果没有工具支持,它是手工写的,很容易犯错误。
在标题中,不要下意识地写下它。此标头是特别的关注,您需要将其设置为要被称为动作,应该注意的是,不同的动作baseurl可能是不同的。相反,Restful的API不是这么多坑。
尽管大多数情况下,SOAP的返回数据是XML格式,但有时如下以下多个部分的格式,这需要一些努力来分析它。
golang的时间类型需要在解散时的时区信息。简而言之,最后必须至少有一个z。例如:2021-09-23T14:55:43.835Z。这是一种重写的方法。
写了这么多书籍后,您还会发现,如果没有准备好工具,则必须处理的细节并不普通。
在技术领域,没有新问题,否则您将永远不会遇到这个问题。我开始寻找道路。我不得不说搜索或Google!
我找到了我喜欢的工具GOWSDL,您可以使用此工具轻松生成模板代码:您可以使用此工具:
但是,我不建议您直接使用生成的代码,而只使用其定义的结构,然后为自己打包客户端。原因是:
总体而言,生成代码有许多优势:
最后,让我们提到。我不知道这是我集成的第三方服务的肥皂协议。它与该错误相同。对于PR,尽管没有人可以处理,但确实很棘手。
在这种情况下,它涉及另一个问题。当使用Go Mod管理第三方软件包时,如何保存参考软件包中的问题?
实际上,它可以分为3个步骤:
我没有调查 - 深度调查的原因,但感觉与go.mod.still有关,您将不会是第一个遇到这个问题的人。解决方案是在go.mod中使用替换函数。在Go.mod文件的末尾,添加以下代码以修复此错误。