如何在不使用添加Web引用的情况下以编程方式在asp.net中调用webservice? 我的webservice网址不断变化。因此我需要在运行时捕获url并显示结果。 请指教。
答案 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)
您在哪里尝试呼叫服务以及服务文件所在的位置?
如果该服务位于同一网站上。为什么不直接从服务中实例化类名。或者只是创建一个单独的类并使用接口