2012-03-25 34 views
0

我有一個web服務,我需要在.net應用程序中調用。鏈接看起來像這樣。如何調用具有查詢字符串數據的WebService?

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

只有當它這樣調用時才能使用。對於其餘的我沒有訪問權限。即如果我沒有查詢字符串在瀏覽器上調用它,它將無法正常工作。但用查詢字符串它將返回一個XML數據。

現在,當我在.net應用程序中調用它不工作?

如何在.NET應用程序中調用此函數?

正常的Webservice導入方法不起作用,因爲它需要一個查詢字符串的值,我們沒有訪問沒有查詢字符串的鏈接。

+1

這不是一個Web服務本身。你需要發佈你的代碼來調用它,這樣人們才能確定問題所在 - 沒有代碼只是介意閱讀和猜測。 – slugster 2012-03-25 10:29:50

+0

你可以在你打電話給WS的地方發佈你的代碼嗎? – 2012-03-25 10:31:01

回答

3

您目前正在嘗試下載它嗎?

一個非常簡單的方法是使用HttpWebRequestHttpWebResponse類;

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; 

} 

這個方法簡單地創建一個HttpWebRequest的,與URL進行初始化(通過的String.Format以追加學生證),某些Windows憑據和預期的內容類型。

然後它通過GetResponse方法調用遠程地址。然後將響應加載到流中,然後使用XmlTextReader將響應流中的Xml數據加載到XmlDocument中,然後將XmlDocument返回給調用者。

您還可以使用WebClientXDocument來實現同樣的事情:

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); 
相關問題