如何在asp.net中以编程方式调用Web服务

时间:2010-03-10 05:11:50

标签: web-services asp.net-3.5

如何在不使用添加Web引用的情况下以编程方式在asp.net中调用webservice? 我的webservice网址不断变化。因此我需要在运行时捕获url并显示结果。 请指教。

4 个答案:

答案 0 :(得分:18)

您可以在运行时更改Web引用的URL(前提是新地址托管的服务与您最初用于创建引用的模式相同):

MyWebService ms = new MyWebService();
ms.Url = "http://example.com/webservice.asmx";
ms.MyWebMethod();

Web引用绝对是可行的方式 - 虽然通过Web引用创建的类通常非常繁重,但所有强大的输入都非常适合您。

答案 1 :(得分:4)

您需要执行以下步骤。

PreReq: 首先,您知道Web服务的URL。

<强>解决方案: 使用wsdl.exe创建代理类,然后编译它。

wsdl /out:myProxyClass.cs http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL
  

(还有其他可用的开关   对于wsdl。例如,生成VB   class,你需要添加开关   /语言:VB)

生成代理类后,您可以轻松使用代码。

MyProxyClass objService = new MyProxyClass();
DateTime time = objService.GetServerTime(); //Suppose service has  method getServerTime

答案 2 :(得分:2)

您可以将端点URL指定为客户端代理类的构造函数的一部分。

如果您不需要在运行时指定它,那么也可以在web.config文件中设置它。

答案 3 :(得分:0)

您在哪里尝试呼叫服务以及服务文件所在的位置?

如果该服务位于同一网站上。为什么不直接从服务中实例化类名。或者只是创建一个单独的类并使用接口