以编程方式在C#中调用webmethods

han*_*ock 5 c# web-services asmx webmethod

我正在尝试编写一个函数,可以从webserive调用web方法,给出方法的名称和web服务的URL.我在博客上发现了一些代码,除了一个细节之外,这样做很好.它还要求提供请求XML.这里的目标是从Web服务本身获取请求XML模板.我确信这是可能的,因为如果我在浏览器中访问webservice的URL,我可以看到请求和响应XML模板.

这是以编程方式调用webmethod的代码:

XmlDocument doc = new XmlDocument();
//this is the problem. I need to get this automatically
doc.Load("../../request.xml"); 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost/dummyws/dummyws.asmx?op=HelloWorld");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
Stream stm = req.GetRequestStream();
doc.Save(stm);
stm.Close();
WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
Console.WriteLine(r.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)

dar*_*iom 2

继上面的评论之后。如果您有一个描述您的服务的 WSDL 文件,您可以使用它作为与您的 Web 服务通信所需的信息。

使用代理类与服务代理通信是一种将自己从 HTTP 和 XML 底层管道中抽象出来的简单方法。

有多种方法可以在运行时执行此操作 - 本质上是生成 Visual Studio 在向项目添加 Web 服务引用时生成的代码。

我使用的解决方案基于:这个新闻组问题,但还有其他示例