如何在使用ATL库时在运行时更改Web服务URL?

时间:2012-11-08 16:36:37

标签: c++ web-services unmanaged atl

我正在尝试使用其他公司的现有网络服务,并且无法找到从不同位置使用相同网络服务的解决方案。

现有的网络服务位于地址http://url.to.A/webservice/,我可以使用ATL tools中的sproxy.exe为此服务生成C ++代理类。

使用该类,我可以毫无问题地使用Web服务。

现在我需要使用相同的Web服务,但需要使用另一个URL(比如说http://url.to.B/webservice/)并且以前创建的代理类不起作用。方法代理之一中的SendRequest方法始终返回错误的HRESULT代码。专门为第二个服务生成一个新的代理提供了一个可行的解决方案BTW。

当我说服务是相同的时,我的意思是他们公开了完全相同的方法,以便他们各自的wsdl定义文件只有服务URL不同。

我试图更改生成的代理类实例的URL属性,但它没有帮助。

鉴于我与消费部分使用非托管C ++并且我希望能够在运行时指定服务端点,是否有可行解决方案?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

为每个服务器/服务生成一个单独的代理类。

然后对生成的代码执行diff操作。这应该让你知道差异是什么。

答案 1 :(得分:0)

最后证明,使用sproxy.exe生成一个可以动态分配给Web服务端点的类是不可能的。