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:
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();
}
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
[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]));
        }
 
    }
Le serveur me répond :
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 ?