最近在整个WebService,闹了好几天同时调用多个服务没整出来,求坛子里的同志救救~~~
先把情况说下,用的是gsoap 2.8.
有两个WebService服务,ServiceA,和ServiceB,WebService是没有问题的,正常可是使用。我通过gSoap生成的了这两个服务的头文件ServiceA.h,ServiceB.h
wsdl2h -n serv_a -N SerA -s -o ServiceA.h xxx.wsdl
wsdl2h -n serv_b -N SerB -s -o ServiceB.h xxx.wsdl
然后我手动把生成的这两个头文件合并,把ServiceB.h的内容合并到了ServiceA.h
然后gSoap生成其余的文件
soapcpp2 -L -C -x ServiceA.h
最后添加到工程里,发现ServiceA能够调用,但是ServiceB就不行,调用ServiceB时居然告诉我:
“没有有效的操作参数,无法处理请求。请提供有效的SOAP操作”。
但是单独生成ServiceB相关的文件又是可以调用。两个头文件合并成一个头文件是手动处理的,确保内容都合并了。
~~哪位童鞋知道是怎么回事吗?
[解决办法]
就保留两套服务器的代码, 把他们编译成两个 dll 来调用不行么? 非要合并?
[解决办法]
那有只能仔细检查你的合并了.
如果把两个服务器的文件直接加进去一起编译会有许多函数重定义吧
[解决办法]
你的问题应该是linux/unix下程序调用webservice吧? 是不是生成的调用头文件里面包含的webservice各个函数都有一个命名空间
如果使用多个文件关联生成时候命名空间是随机的 所以你才分开手动生成每一个再手动合并的? 我之前是这个问题
wsdl2h *.wsdl -e -o CallWebservice.h -t typemap.dat
如typemap.dat中有这一行
Query = "http://bbss.chinaunicom.com"