2012-03-25 4 views
0

Ich habe einen Webservice, den ich in .net-Anwendung aufrufen muss. Der Link sieht so aus.Wie wird ein WebService mit Querystring-Daten aufgerufen?

http://www.contoso.com/student?id=12345 

Dies funktioniert nur, wenn es so genannt wird. Für den Rest dieses habe ich keinen Zugang. Dh wenn ich es in einem Browser ohne den Querystring anrufe, wird es nicht funktionieren. aber mit Querystring wird es eine XML-Daten zurückgeben.

Nun, wenn ich dies in der .net-Anwendung aufrufen, funktioniert es nicht?

Wie kann ich das in einer .NET-Anwendung aufrufen?

Die normalen Webservice-Importmethoden funktionieren nicht, da sie einen Querystring mit Wert benötigen und wir keinen Zugriff auf die Links haben, die nicht über die Querystring verfügen.

+1

Dies ist kein Web-Service als solche. Sie müssen Ihren Code veröffentlichen, der ihn aufruft, damit die Leute feststellen können, worum es sich bei dem Problem handelt - ohne den Code geht es nur ums Lesen und Raten. – slugster

+0

können Sie Ihren Code dort posten, wo Sie den WS anrufen? –

Antwort

3

Wie versuchen Sie gerade, es herunterzuladen?

Eine sehr einfache Möglichkeit ist die Verwendung der Klassen HttpWebRequest und HttpWebResponse;

public XmlDocument GetStudentXml(int studentId) 
{ 
    XmlDocument targetXml = new XmlDocument(); 

    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(String.Format("http://www.contoso.com/student?id={0}", studentId)); 

    webRequest.Credentials = System.Net.CredentialCache.DefaultCredentials; 
    webRequest.Accept = "text/xml"; 

    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); 

    using (Stream responseStream = webResponse.GetResponseStream()) 
    { 
     XmlTextReader reader = new XmlTextReader(responseStream); 
     targetXml.Load(reader); 
     reader.Close(); 
    } 

    webResponse.Close(); 

    return targetXml; 

} 

Diese Methode erzeugt einfach eine HttpWebRequest, initialisiert es mit der URL, einige Windows-Anmeldeinformationen und die erwartete Inhaltstyp (via String.Format, um die Schüler-ID anhängen).

Es ruft dann die Remote-Adresse über die GetResponse-Methode auf. Die Antwort wird dann in einen Stream geladen, und ein XmlTextReader wird verwendet, um die Xml-Daten aus dem Antwortstream in das XmlDocument zu laden, das dann an den Aufrufer zurückgegeben wird.

Sie können auch WebClient und XDocument verwenden, um die gleiche Sache zu erreichen:

string url = String.Format("http://www.contoso.com/student?id={0}", studentId); 
string remoteXml; 

using (var webClient = new WebClient()) 
{ 
    remoteXml = webClient.DownloadString(url); 
} 

XDocument doc = XDocument.Parse(remoteXml); 
Verwandte Themen