在Linux下,利用gSoap生成的WebService客户端进行开发时遇到的问题

本文描述了在Linux环境下使用gSoap 2.7.15版本生成的WebService客户端在开发过程中遇到的三个问题:1) 编译时函数参数缺失;2) 客户端发送数据到服务端失败;3) gethostbyname域名解析失败。针对这些问题,作者给出了临时的解决办法,包括修改编译错误的函数调用,调整服务端接口设计,以及重写gethostbyname函数以修复TCP连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下,利用gSoap生成了WebService客户端,在进行开发时遇到了如下几个问题,其中,gSoap的版本号是2.7.15,但由于没有重新编译,而是使用工具包自带的wsdl2hsoapcpp2,其版本号为2.7.9l

1. 编译时提示:函数soap_save_blocksoap_push_block均缺少一个参数。

  暂不清楚是由于WSDL编写不标准还是gSoap本身存在问题,不过这里只需要简单修改

  一下就好了:给提示缺少参数的调用均增加一个参数NULL即可。

2. 程序运行时出现:调用WebService接口向服务端发送数据时失败,但是调用WebService

  接口可以正常接收来自服务端的数据。

  经查,造成该问题的直接原因是该版本的gSoap生成的WebService客户端对多参数的接

  口支持存在问题,这里临时解决方法是:服务端将所有涉及到客户端向服务端发送数据

  的接口均改为一个参数,这样修改后程序运行正常。

  至于该问题的真正原因尚未去查,不过可参考下边的一篇文章:

  http://blog.youkuaiyun.com/yufeng20345390/archive/2010/06/12/5666304.aspx

3. gethostbyname函数的问题

  本项目是基于嵌入式Linux来开发的,利用gSoap生成的客户端进行程序开发时发现:

  程序运行时老是连不上WebService服务端,经查,发现是域名解析函数gethostbyname的 

  问题:域名解析失败。

  原因待查。

  解决办法,项目组重写了gethostbyname函数,然后利用该函数修改了文件

  stdsoap2.cppstdsoap2.h关于TCP连接部分的源代码,从而解决了该问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值