【发布时间】:2011-02-28 23:34:37
【问题描述】:
我能够使用以下代码从服务器成功检索 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()
【问题讨论】:
-
为什么? Web 服务引用有什么问题?
-
您通常不会——也就是说,除非您愿意“说”Web 服务(又名 SOAP)。 HttpWebRequest 只是 Web 服务使用的一种传输机制(通常也是唯一一种)——可以说是通过 Web 服务引用添加的最简单的(尽管有它们自己的怪癖)。您可以更改使用的请求对象和选项。
-
服务将被非dotNet环境调用。我想知道不使用网络服务代理是怎么做到的。
-
如果它是由类似的环境(例如 Java)完成的,那么您仍然使用代理来完成它。如果您需要从 JavaScript 或其他“纯 Web”环境中执行此操作,请立即放弃 ASMX,并使用 WCF 构建自己的 REST 服务;这样您就可以使用 HTTP GET 和 POST 完成所有操作。
标签: .net vb.net web-services httpwebrequest