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 中国語 Web サイトの他の関連記事を参照してください。