在 C# 中访问 Web 服务的标准
本文关键字:服务 标准 Web 访问 | 更新日期: 2023-09-27 18:36:16
我想知道一种在C#中访问Web服务的标准方法,其中Web服务引用可以通过编程方式定义。
我有以下情况:
- 可以通过编程方式设置多个 Web 服务。因此,我无法使用Visual Studio提供的"添加Web服务引用"(或者我认为如果我错了,请纠正我)。
- 添加的 Web 服务具有相同的结构/操作/操作/请求/响应,但可能属于提供不同数据的不同域。
例如:
webservice 01 : http://abc.example.com/getData
webservice 02 : http://xyz.example.net/getData
- 我
- 是否仍可以使用从一个服务生成的代理并将其用于另一个服务,或者我是否必须处理原始 XML 响应?
编辑 01 :我想知道以下访问 Web 服务的片段是否可以推广到用于所有 Web 服务
var binding = new BasicHttpBinding();
var address = new EndpointAddress("http://www.abc.com/service.asmx");
var factory = new ChannelFactory<IGeneralProxy>(binding, address);
var obj = factory.CreateChannel();
var responseString = obj.GetData("UserName", "Password");
Assert.IsNotNull(responseString);
其中IGeneralProxy
是客户端的接口
如果以上任何一点不清楚,请告诉我。
是的,只要服务相同,您就可以对两个服务使用相同的生成代理。我一直这样做。
这是我的代码截图。我使用 WSE 3.0,因为我正在处理的项目是 .net 2.0。
ServiceWse serivce = new ServiceWse();
CookieContainer cookieContainer = new CookieContainer();
serivce.Timeout = 1000 * 60 * CommonFunctions.GetConfigValue<int>(Consts.Common.WebServiceTimeout, 20);
serivce.Url = CommonFunctions.GetConfigValue(Consts.Urls.MyServiceSecuredURL, string.Empty);
serivce.CookieContainer = cookieContainer;
if (CommonFunctions.GetConfigValue(Consts.Security.UseSecuredServices, false))
CommonFunctions.SetWSSecurity(_service.RequestSoapContext);
看看之前对类似问题的回答:
如何以编程方式将客户端连接到 WCF 服务?
您可以为每个 Web 服务执行此操作。
我们做类似的事情。Web 服务引用是针对我们服务的 Dev 版本创建的。我们还在 web.config 中为每个 Web 服务 URI 设置了一个设置,我们在实例化服务时使用;这样,当我们部署到生产环境时,我们所要做的就是更改 web.config 中的 URI,而不是重新生成项目。
var myService= new myService(){Uri = [service uri from web.config]};