bonjour a tous,
Je dois envoyer une requete SOAP sur une url qui n'est pas un webservice.
Je sais consommer un web service en générant un proxy à partir d'un wsdl mais la ce n'est pas vraiment un web service et je n'ai pas de wsdl.
Je dois envoyer un xml dans un message soap.
J'ai un exemple en java (fournis par le propriétaire du service) mais je ne trouve pas l'équivalent en .net.
En java:
Voila ce que j'ai en .net:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 // initialize SOAP proxy Call proxy = new Call(); proxy.setTargetObjectURI("urn:TripFlow"); proxy.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/"); URL url = new URL ("http://.../soap/servlet/rpcrouter"); String SOAPActionURI = ""; SOAPHTTPConnection shc = new SOAPHTTPConnection (); shc.setMaintainSession (true); proxy.setSOAPTransport (shc); proxy.setMethodName("service"); // prepare call (build request) Vector params = new Vector(); Parameter nameParam = new Parameter("request", java.lang.String.class, "<flightavailrequest version="1.0">...</flightavailrequest>", null); params.addElement(nameParam); proxy.setParams(params); // call service Response resp = proxy.invoke(url, SOAPActionURI); // Check response if (resp.generatedFault()) { Fault fault = resp.getFault(); throw new SOAPException(fault.getFaultCode(), fault.getFaultString()); } else { Parameter retValue = resp.getReturnValue(); return (String)retValue.getValue(); }
Le serveur me répond :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 [System.Web.Services.WebServiceBindingAttribute(Name = "AmadeusProxy", Namespace = "sh.partner.amadeus")] public class AmadeusProxy : SoapHttpClientProtocol { public AmadeusProxy() { this.Url = "http://.../soap/servlet/rpcrouter"; } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.Web.Services.Protocols.SoapDocumentMethodAttribute( "")] public OverrideOutput Override(OverrideInputFlow inputMessage) { object[] results = this.Invoke("", new object[] { inputMessage }); return ((IAMOutput)(results[0])); } }
service http://.../soap/servlet/rpcrouter' unknown
J'en déduit que mon code .Net n'est pas l'équivalent du code java.
Avez-vous une idée ?
Partager