虽然 Go 本身缺乏 WSDL 支持,但您可以手动编码和解码 SOAP 请求。然而,由于不同 SOAP 服务器的怪癖,这种方法变得复杂。
标准编码/XML 的缺陷
使用 SOAP 的标准编码/xml 包存在局限性:
xmlutil:自定义解决方案
为了简化 Go 中的 SOAP 处理, xmlutil 包提供以下功能:
使用示例
以下示例演示了对 SOAP 请求进行编码和解码xmlutil:
import ( "github.com/webconnex/xmlutil" ) type MethodCall struct { One string Two string } x := xmlutil.NewXmlUtil() x.RegisterTypeMore(MethodCall{}, xml.Name{"", ""}, []xml.Attr{...}) buf := new(bytes.Buffer) enc := x.NewEncoder(buf) env := &Envelope{Body{MethodCall{One: "one", Two: "two"}}} enc.Encode(env)
通过使用 Find 方法,您可以处理复杂的响应结构:
dec := x.NewDecoder(bytes.NewBufferString(...)) find := []xml.Name{xml.Name{"", "MethodCallResponse"}, xml.Name{"http://www.w3.org/2003/05/soap-envelope", "Fault"}} var start *xml.StarElement if start, err := dec.Find(find); err != nil {...}
结论
虽然 SOAP 可能不会理想情况下,xmlutil 提供了在 Go 中处理 SOAP/WSDL 的实用解决方案,以灵活高效的方式简化了编码和解码过程方式。
以上是xmlutil 如何简化 Go 中的 SOAP/WSDL 处理?的详细内容。更多信息请关注PHP中文网其他相关文章!