2012-03-25 5 views
0

.net 응용 프로그램에서 호출해야하는 webservice가 있습니다. 링크는 다음과 같습니다.쿼리 문자열 데이터가있는 WebService를 호출하는 방법은 무엇입니까?

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

이렇게하면 호출 할 때만 작동합니다. 이것의 나머지를 위해 나는 접근이 없다. 즉, 쿼리 문자열없이 브라우저에서 호출하면 작동하지 않습니다. querystring을 사용하면 XML 데이터를 반환합니다.

지금, .net 응용 프로그램에서 이것을 호출하면 작동하지 않습니까?

.NET 응용 프로그램에서 어떻게 호출 할 수 있습니까?

일반적인 웹 서비스 가져 오기 방법은 값이있는 쿼리 문자열이 필요하므로 쿼리 문자열이없는 링크에 액세스 할 필요가 없으므로 작동하지 않습니다.

+1

이 웹 서비스와 같은 없습니다. 사람들이 문제가 무엇인지 판단 할 수 있도록 코드를 게시해야합니다. 코드를 읽고 읽고 추측 할 필요가 없습니다. – slugster

+0

WS를 호출 할 때 코드를 게시 할 수 있습니까? –

답변

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; 

} 

이 방법은 단순히 (학생 ID를 추가 할 수 있도록 및 String.format를 통해) URL로 초기화하는 HttpWebRequest를을 만들고, 일부 창 자격 증명 및 예상되는 내용 유형입니다.

그런 다음 GetResponse 메서드를 통해 원격 주소를 호출합니다. 그런 다음 응답을 스트림에로드하고 XmlTextReader를 사용하여 Xml 데이터를 응답 스트림에서 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); 
관련 문제