首页 > 编程语言 > 详细

gsoap工具利用wsdl配置文件生成C语言框架编程注意事项

时间:2021-07-10 22:07:44      阅读:36      评论:0      收藏:0      [点我收藏+]

1、已有wsdl配置文件,利用gsoap开源工具自动生成C语言框架分如下两步:

  ① wsdl2h -c temple.wsdl // 生成同名头文件

  ② soapcpp2 -n -p MYserver -c -S -L templ.h // 生成以MYserver开头的服务端框架代码

  执行完如上两步,本目录下会生成以 MYserver开头的.c 及 .h , 另外还有每个接口对应的请求报文xxx.req.xml及响应报文.xx.res.xml  

技术分享图片

 

 

 

 

2、利用soap框架编程注意事项

① 内存管理。若需要框架释放的内存,需要用soap_malloc函数分配,soap_end前会自动调用soap_destroy()事放内存

② 一个端口支持多个服务。假设我的1234需要开放MYserver/Aserver/Bserver三个服务,每个服务有若干接口。

A 我的三个服务接口我分别编译成lib_MYserver.so lib_Aserver.so lib_Bserver.so。首先服务程序需要引用这三个动态库,才能调用到三个服务的接口。

B 服务守护进程soap_accept()成功,会调用MYserver_server()函数解析报文,并在MYserver_request()接口将其分配到对应接口。// MYserver是第一步中我举例子重命名的

C 在MYserver_request()函数需要把Aserver_request() Bserver_request() 接口解析内容合并进来。另外若AB服务的域名与MYserver服务域名不一致,还需要在解析接口前调用soap_set_namespaces()函数重新设置域名。

技术分享图片

 

 C 若三个服务中soap头成员不一致,或有同名接口但报文格式不一致情况。三个动态库中存在三个同名结构体但成员不一致,程序运行解析过程,会随机引用某个动态库的接口体,造成程序异常退出。怎么办呢?

  可以通过修改1中生成的temple.h文件,直接修改结构体成员使其保持一致,再使用soapcpp2命令生成源码;也可以修改wsdl,写一个假方法扩展成员,再重新执行1中两步。

 

目前遇到以上几类问题吧,我差不多搞了两天,也是没有gsoap的基础,走了好多弯路┭┮﹏┭┮   编程路漫漫,永远是新人啊

 

gsoap工具利用wsdl配置文件生成C语言框架编程注意事项

原文:https://www.cnblogs.com/cychains/p/14994643.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!