Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengendalikan Permintaan dan Respons SOAP dengan Berkesan dalam Pergi Tanpa Sokongan WSDL Asli?
Sokongan WSDL/SOAP dalam Go
Walaupun Go tidak mempunyai sokongan yang jelas untuk WSDL, ia menyediakan pilihan untuk bekerja secara langsung dengan permintaan SOAP.
Pengekodan SABUN dan Penyahkodan
Pakej pengekodan/xml standard dalam Go mungkin tidak mencukupi untuk SOAP. Ini kerana SOAP memerlukan atribut XML khusus, seperti xsi:type="xsd:string" pada tag rentetan.
Untuk menangani had ini, pakej github.com/webconnex/xmlutil telah dibangunkan. Ia menyediakan keupayaan pengekodan dan penyahkodan yang dipertingkatkan untuk SOAP, termasuk sokongan untuk ruang nama dan atribut XML tersuai.
Contoh Pelaksanaan SOAP
Coretan kod berikut menggambarkan cara menggunakan xmlutil untuk mengekod dan menyahkod permintaan SOAP:
package main import ( "bytes" "fmt" "github.com/webconnex/xmlutil" "log" ) type Envelope struct { Body `xml:"soap:"` } type Body struct { Msg interface{} } type MethodCall struct { One string Two string } type MethodCallResponse struct { Three string } func main() { x := xmlutil.NewXmlUtil() // Register namespaces and types x.RegisterNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi") x.RegisterNamespace("http://www.w3.org/2001/XMLSchema", "xsd") x.RegisterNamespace("http://www.w3.org/2003/05/soap-envelope", "soap") // Encode the SOAP request env := &Envelope{Body{MethodCall{ One: "one", Two: "two", }}} buf := new(bytes.Buffer) enc := x.NewEncoder(buf) if err := enc.Encode(env); err != nil { log.Fatal(err) } // Decode the SOAP response dec := x.NewDecoder(bytes.NewBufferString(`<?xml version="1.0" encoding="utf-8"?> <soap:Envelope> <soap:Body> <MethodCallResponse> <Three>three</Three> </MethodCallResponse> </soap:Body> </soap:Envelope>`)) var resp MethodCallResponse if err := dec.DecodeElement(&resp); err != nil { log.Fatal(err) } fmt.Println(resp) }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Permintaan dan Respons SOAP dengan Berkesan dalam Pergi Tanpa Sokongan WSDL Asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!