3. 联调过程中出现的问题
1) 参数传递问题
这里,在使用web service调用接口时,根据以前的思路(PHP的web service中的调用方式),想当然的将C++里面调用时参数的传递当成直接传递了,例如:上面调用ProxyMiddleWareJobSearch接口时,它接收一个xml格式的字符串,并返回一个xml格式的字符串,因此在刚开始使用时,采取的调用方式为:
Proxy->ProxyMiddleWareJobSearch(NULL, strWebServiceAddr.c_str(), strRequest, strResult);采用的字符串形式,结果一直报错,意思是无法将const char *转换为_ns1__ProxyMiddleWareJobSearch *的形式,在后来运用中发现应该如下使用:
_ns1__ProxyMiddleWareJobSearch inputParam; //! 代表输入
_ns1__ProxyMiddleWareJobSearchResponse outputParam; //!代表输出
inputParam.in0 = const_cast
如果接口需要第二个参数,则调用方式为:inputParam.in1 = ...
string strResult = outputParam.out; //! 调用后结果的返回。
2) 中文乱码问题
解决方法:在Java构建web service端,返回字符串之前,先进行base64的加密,然后c++作为web service的client调用完方法后,先对字符串进行base64的解密,这样就不存在乱码问题了。
C++实现Base64的代码参考链接:
http://www.cnblogs.com/phinecos/archive/2008/10/10/1308272.html