2012-11-08 57 views
0

我试图从另一家公司使用现有的网络服务,并且遇到麻烦以找到解决方案来使用来自不同位置的相同网络服务。如何使用ATL库在运行时更改Web服务URL?

现有的网络服务在地址http://url.to.A/webservice/可用,我能够使用ATL toolssproxy.exe生成此服务的C++代理类。

使用这个类,我可以消耗Web服务没有任何问题。

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

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

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

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

感谢您的帮助。

回答

0

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

1

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

然后对生成的代码进行差异化。这应该让你知道有什么区别。

+0

谢谢。这些差异只与在类的不同地方硬编码的服务的URL有关,但是在某些ATL结构的“const”成员中...... –

+0

然后区别在于服务器。也许是一个权限问题。你能使用浏览器访问服务器吗? –

+0

是的,_“不幸”_我可以通过浏览器访问这两个URL ...感谢提示顺便说一句。 –