2010-06-08 6 views
2

아래 코드로 서버에서 wsdl을 성공적으로 가져올 수 있습니다.HttpWebRequest를 사용하여 웹 서비스를 호출하는 방법

이제이 동일한 서비스에서 메서드 (GetVersion)를 어떻게 호출 할 수 있습니까?

시도 중 http://www.servername.com/DataService.asmx/GetVersion은 페이지를 찾을 수 없다는 오류를 반환합니다. .NET WebService 참조에서 메서드를 호출하는 데 아무런 문제가 없지만 HttpWebRequest을 사용할 수 있기를 원합니다.

Dim req As HttpWebRequest 
Dim resp As HttpWebResponse 
Dim sr As IO.StreamReader 

req = WebRequest.Create("http://www.servername.com/DataService.asmx?wsdl") 
resp = req.GetResponse 

sr = New IO.StreamReader(resp.GetResponseStream) 
txt.Text = sr.ReadToEnd 
sr.Close() 
+0

왜? 웹 서비스 참조의 문제점은 무엇입니까? – SLaks

+0

웹 서비스 (SOAP이라고도 함)를 "말하려는"경우가 아니면 일반적으로 그렇지 않습니다. HttpWebRequest는 웹 서비스에서 사용하는 하나의 전송 메커니즘 (일반적으로 단 하나의 메커니즘) 일뿐 아니라 웹 서비스 참조를 통해 추가 된 가장 쉬운 방법입니다. 요청 개체와 사용 된 옵션을 변경할 수 있습니다. –

+0

서비스는 dotNet이 아닌 환경에서 호출합니다. 웹 서비스 프록시를 사용하지 않는 방법을 알고 싶습니다. – Bill

답변

0

유일한 문제는 웹 서버의 구성입니다. 필자가 IIS를 사용하고 있기 때문에 각 웹 서비스의 구성 (web.config 파일)은 Get, Post 및/또는 Soap에 액세스 할 수있는 프로토콜의 관리를 허용해야합니다.

:

난 그냥 내 자신의 웹 서비스를 테스트 한하고 요청을 게시 예상대로 브라우저의 요청이 ... 또한 응답 GET에 대한 응답 (I는 다음 코드로 http://www.4guysfromrolla.com/articles/022410-1.aspx에서 일부 코드를 적용)
Dim payload As Byte() 
    payload = Text.Encoding.ASCII.GetBytes("paramName=firstValue&p2=secondValue") 

    Dim webRequest As System.Net.HttpWebRequest 
    webRequest = System.Net.HttpWebRequest.Create("http://www.servername.com/DataService.asmx/GetVersion") 
    webRequest.Method = "POST" 
    webRequest.KeepAlive = False 
    webRequest.ContentType = "application/x-www-form-urlencoded" 
    webRequest.ContentLength = payload.Length 

    Dim reqStream As System.IO.Stream 
    reqStream = webRequest.GetRequestStream() 
    reqStream.Write(payload, 0, payload.Length) 
    reqStream.Close() 

    Dim webResponse As System.Net.HttpWebResponse 
    webResponse = webRequest.GetResponse() 

    Dim reader As System.IO.StreamReader 
    reader = New System.IO.StreamReader(webResponse.GetResponseStream()) 
    Dim xmlDoc As System.Xml.XmlDocument 
    xmlDoc = New System.Xml.XmlDocument() 
    xmlDoc.LoadXml(reader.ReadToEnd()) 

행운을 비네.

관련 문제