Bien que Go ne prenne pas nativement en charge WSDL, vous pouvez encoder et décoder manuellement les requêtes SOAP. Cependant, cette approche devient complexe en raison des caprices des différents serveurs SOAP.
Déficiences du standard Encoding/XML
L'utilisation du package standard encoding/xml pour SOAP présente des limites :
xmlutil : une solution personnalisée
Pour simplifier la gestion de SOAP dans Go, le package xmlutil fournit les fonctionnalités suivantes :
Exemple d'utilisation
L'exemple suivant montre l'encodage et le décodage d'une requête SOAP avec 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)
En utilisant la méthode Find, vous pouvez gérer des structures de réponse complexes :
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 {...}
Conclusion
Bien que SOAP ne soit peut-être pas idéal, xmlutil offre une solution pratique pour gérer SOAP/WSDL dans Go, en simplifiant le processus d'encodage et de décodage de manière flexible et efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!