今天不记录无聊的生活,记录技术问题,技术也是生活的一部分。gsoap探索中的点滴。
内存管理部分:
1、gsoap所有out出去的数据必须自己分配空间,写入数据;而in进来的数据由gsoap自动完成,我们所需的只是把in函数的返回的数据指针保存到相应位置。
2、gsoap每次在接受数据的时候都会回收一些临时分配的动态内存,如果SOAP头,如属性表等等,所以不能指望某些数据初始化一次就可以在整个回话期间起作用,必须自己加入代码或者方法去实现这个功能。
3、如果想让gsoap自动管理内存,就应该用soap_malloc()去分配所有的动态空间,反之自己解决。
4、注意会话结束的时候用malloc_done()去重置soap上下文,soap_unlink()可以取消某个内存与soap的关联,soap_dealloc()可以单独释放一块被soap使用的内存。
数据通信部分:
1、gsoap生成的代码一般Header信息不完善,注意可能会需要手工制定Header结构,重写/修改in out default serialize等相关函数。
2、如果接受soap信息时,忽略头部的某些信息例如mustUnderstand,则程序会返回一个忽略了需要注意的信息的错误,注意按需修改Header处理部分。
3、gsoap生成代码时,会给PRC方法包装成一个soap元素,而元素的内容就是RPC方法的输入参数,所以对于不需要包装,或者需要自主包装的需求,则要更改.h文件中RPC方法的方法名或者参数格式。
gsoap使用点滴
最新推荐文章于 2021-03-19 03:58:25 发布