C# 中动态更改webService 连接是可以通过 webservice URL属性的。
但是在如果用C++调用webservice 的话,是没有这个属性的,那么怎么连的。下面提供一种方式我在Microsoft Visual Studio 2005 上可以是用。
当我们在C++工程中加入web引用后开发环境会给我们自动增加一些文件,其中一个是头文件,就是用来定义server端的方法的头文件,我们找到这个头文件 Visual Studio 2005 中是在Generated Files文件夹下面,打开这个头文件我们能看到 一些方法的定义 其中有一段是这样的
CWebServiceT(ISAXXMLReader *pReader = NULL)
:TClient(_T("http://localhost/WebService.asmx"))
{
SetClient(true);
SetReader(pReader);
}
其中 http://localhost/WebService.asmx" 是你的webservice的URL,这迫使我们在程序开发时就要知道运行时webservice的URL ,这在很多情况下是不可能的,我们需要在运行时动态的更改它的 URL 。
我们可以这样做,将这个方法改成 或者重载为下面的样子
CWebServiceT(ISAXXMLReader *pReader = NULL,LPCTSTR webServiceUrl = NULL)
:TClient(webServiceUrl)
{
SetClient(true);
SetReader(pReader);
}
这个函数是 webservice的构造函数,我们修改或重载的结果是使函数接受一个 webServiceUrl的参数 用这个参数来传递我们要指定的webservice的连接。
调用方式是:
char * url = "......................";
WebService::CWebService *cw = new WebService::CWebService(NULL,(LPCTSTR)url);
即可。:) 当然url是LPCTSTRl类型我C++玩得并不好,只是项目逼得没办法,所以有什么不对的请指教。不要骂我。。。。。。。。。。。。。