最近用php apache nusoap做了一个WEB server(这个nusoap.php有点问题,需要跟gsoap客户端调试修改),客户端用gsoap linux C 做的。由于是第一次使用这个开源软件,还是遇到很多问题。在下面时间会给一个总结。
1、在遇到这类问题时候,一般需要服务端和客户端综合调试,可以把服务端接到request和发送reponse都打印出来,这样子可以具体知道服务器接收和发送的soap封装信息,有利于排除问题。
2、客户端开启debug方式
1)、首先gsoap安装时,在./configure --prefix=/usr/local/gsoap --enable-debug
2)、在/usr/local/gsoap/include/sdtsoap2.h文件中开启#define DEBUG
3)、Makefile中加入-DSOAP_DEBUG //这个不加好像也可以,关键在1)步。
4)、在当前目录下生成SENT.log、RECV.log、TEST.log日志文件
3、客户端中文乱码问题
soap_init(&soap);
//set charset utf-8
soap_set_mode(&soap, SOAP_C_UTFSTRING); //客户端接收支持中文
4、如果客户端输入中文参数
需要对字符编码转换到utf-8。
5、数据压缩问题gzip
如果在网络通信中,数据量大,一般采取数据压缩方式,看过英文文档,关于WITH_GZIP支持gzip和deflate方式,客户端好像可以自动解压缩服务端发送过来的数据(但是此功能失败,目前对于大数据量还是非压缩方式发送)。日后解决,在更新此帖,如果有人可以解决此问题,可以留言给我。
6、对于WEB server采用http还是https方式,具体可以参考sample/ssl/代码信息。
7、编写了一个shell文件,这样子就不用手动输入产生soapC.c soapClient.c soapH.h soapStub.h文件咯
#!/bin/bash
TOOLPATH=/usr/local/gsoap/bin
TARGET=hrnmweb.h //自己定义的。
WEB=
$TOOLPATH/wsdl2h -c -o $TARGET $WEB
sleep 1
$TOOLPATH/soapcpp2 -c -C -x $TARGET
echo "The script run over!"
具体例子代码,可以在网上百度一下。
阅读(7078) | 评论(2) | 转发(1) |