我能够使用下面的代码从服务器成功检索wsdl。
我现在如何从同一服务中调用方法(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 :(得分:0)
我相信你唯一的问题是网络服务器的配置。每个Web服务的配置(在我的情况下是web.config文件,因为我使用的是IIS)应该允许管理允许访问它的协议:Get,Post和/或Soap。
我刚刚测试了自己的网络服务,它回复了我浏览器的GET请求...它也按预期回复了POST请求(我将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())
祝你好运。