雖然 Go 本身缺乏 WSDL 支持,但您可以手動編碼和解碼 SOAP 請求。然而,由於不同 SOAP 伺服器的怪癖,這種方法變得複雜。
標準編碼/XML 的缺陷
使用SOAP 的標準編碼/xml 套件存在局限性:
它缺乏對interface{} 類型的支援。
xmlutil:自訂解決方案
尋找在複雜 SOAP 回應或故障中定位所需 XML 元素的方法。
使用範例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)
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 {...}
透過使用 Findindxmlutil:
透過使用 Findind方法,您可以處理複雜的回應結構:
結論雖然SOAP 可能不會理想情況下,xmlutil 提供了在Go 中處理SOAP/ WSDL 的實用解決方案,以靈活且有效率的方式簡化了編碼和解碼流程方式。以上是xmlutil 如何簡化 Go 中的 SOAP/WSDL 處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!