2010-01-27 21 views
6

Ich muss einen sicheren Web-Service besuchen, jede Anforderung in der Kopfzeile muss ein Token tragen.So erstellen Sie einen Soap-Client ohne WSDL

Ich kenne den Endpunkt des Web-Service, Ich weiß auch, wie Sie das Token erstellen.

aber ich kann die WSDL für den Webservice nicht sehen.

gibt es eine Möglichkeit in C#, einen Soap-Client zu erstellen, ohne die WSDL-Datei.

+0

Mögliches Duplikat: http://stackoverflow.com/questions/278037/soap-client-in-c-without-access-to-a-wsdl-file –

Antwort

5

ich überprüft haben, dass dieser Code, der die HttpWebRequest class verwendet, arbeitet:

// Takes an input of the SOAP service URL (url) and the XML to be sent to the 
// service (xml). 
public void PostXml(string url, string xml) 
{ 
    byte[] bytes = Encoding.UTF8.GetBytes(xml); 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "POST"; 
    request.ContentLength = bytes.Length; 
    request.ContentType = "text/xml"; 

    using (Stream requestStream = request.GetRequestStream()) 
    { 
     requestStream.Write(bytes, 0, bytes.Length); 
    } 

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
    { 
     if (response.StatusCode != HttpStatusCode.OK) 
     { 
      string message = String.Format("POST failed with HTTP {0}", 
              response.StatusCode); 
      throw new ApplicationException(message); 
     } 
    } 
} 

Sie müssen die richtigen SOAP-Umschlag erstellen und als „xml“ Variable übergeben in. Es braucht etwas zu lesen. Ich fand diese SOAP Tutorial hilfreich.

3

Ein SOAP-Client ist einfach ein HTTP-Client mit mehr Inhalten. Siehe die HttpWebRequest class. Sie müssen dann Ihre eigene SOAP-Nachricht erstellen, möglicherweise mithilfe der XML-Serialisierung.

0

Sie könnten Ihren eigenen Dienst erstellen, ihn für eine WSDL verfügbar machen und dann den Client daraus generieren ... eine Art langer Weg.

0

Können Sie die Entwickler des Webdienstes bitten, Ihnen die WSDL- und XSD-Datei (en) per E-Mail zu senden? Wenn dies der Fall ist, können Sie die Dateien in einem Ordner speichern und dann mithilfe der WSDL auf Ihrer Festplatte eine Service-Referenz hinzufügen.

Verwandte Themen