使用gsoap由.h文件生成wsdl相关问题
2013-09-13 09:14
274 查看
生成wsdl文件步骤
头文件如下// ws_interface.h
#ifndef WS_INTERFACE_H
#define WS_INTERFACE_H
// 注意:以下注释是必要的
//gsoap ns service name: ws_interface
//gsoap ns service style: rpc
//gsoap ns service namespace: https://127.0.0.1:4433/cgi-bin/ws_interface.wsdl
//gsoap ns service location: https://127.0.0.1:4433/cgi-bin
//gsoap ns service executable: ws_interface.cgi
//gsoap ns service encoding: encoded
//gsoap ns schema namespace: urn:ws_interface
typedef struct ns__AddGroupRequest
{
char *validationCode;
char *name;
char *desc;
} ns__AddGroupRequest;
typedef struct ns__AddGroupResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__AddGroupResponse;
typedef struct ns__DelGroupRequest
{
char *validationCode;
char *name;
} ns__DelGroupRequest;
typedef struct ns__DelGroupResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__DelGroupResponse;
typedef struct ns__OpGroupRequest
{
char *validationCode;
char *name;
int enable; // 0 disable, 1 enable
} ns__OpGroupRequest;
typedef struct ns__OpGroupResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__OpGroupResponse;
typedef struct ns__ModifyGroupRequest
{
char *validationCode;
char *name;
char *newname;
} ns__ModifyGroupRequest;
typedef struct ns__ModifyGroupResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__ModifyGroupResponse;
typedef struct ns__AddUserRequest
{
char *validationCode;
char *name;
char *truename;
char *passwd;
char *groupname; // user belong to group name
} ns__AddUserRequest;
typedef struct ns__AddUserResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__AddUserResponse;
typedef struct ns__DelUserRequest
{
char *validationCode;
char *name;
} ns__DelUserRequest;
typedef struct ns__DelUserResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__DelUserResponse;
typedef struct ns__OpUserRequest
{
char *validationCode;
char *name;
int enable; // 0 disable, 1 enable
} ns__OpUserRequest;
typedef struct ns__OpUserResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__OpUserResponse;
typedef struct ns__ModifyUserRequest
{
char *validationCode;
char *name;
char *newname;
char *truename;
char *passwd;
char *groupname; // user belong to group name
} ns__ModifyUserRequest;
typedef struct ns__ModifyUserResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__ModifyUserResponse;
int ns__AddGroup(
ns__AddGroupRequest *AddGroup,
ns__AddGroupResponse *AddGroupResponse );
int ns__DelGroup(
ns__DelGroupRequest *DelGroupRequest,
ns__DelGroupResponse *DelGroupResponse );
int ns__OpGroup(
ns__OpGroupRequest *OpGroupRequest,
ns__OpGroupResponse *OpGroupResponse );
int ns__ModifyGroup(
ns__ModifyGroupRequest *ModifyGroupRequest,
ns__ModifyGroupResponse *ModifyGroupResponse );
int ns__AddUser(
ns__AddUserRequest *AddUserRequest,
ns__AddUserResponse *AddUserResponse );
int ns__DelUser(
ns__DelUserRequest *DelUserRequest,
ns__DelUserResponse *DelUserResponse );
int ns__OpUser(
ns__OpUserRequest *OpUserRequest,
ns__OpUserResponse *OpUserResponse );
int ns__ModifyUser(
ns__ModifyUserRequest *ModifyUserRequest,
ns__ModifyUserResponse *ModifyUserResponse );
#endif
运行如下命令生成wsdl与源文件:
soapcpp2 -Scd ./ws_interface ./ws_interface.h
关于类型的定义
不能因为某个结构一致,而使用typedef定义别名,这样在生成的wsdl中会有两个同样名字的参数,而导致wsdl文件出现语法错误
例如,如下的头文件是错误的:
// ws_interface.h
#ifndef WS_INTERFACE_H
#define WS_INTERFACE_H
//gsoap ns service name: ws_interface
//gsoap ns service style: rpc
//gsoap ns service namespace: https://127.0.0.1:4433/cgi-bin/ws_interface.wsdl
//gsoap ns service location: https://127.0.0.1:4433/cgi-bin
//gsoap ns service executable: ws_interface.cgi
//gsoap ns service encoding: encoded
//gsoap ns schema namespace: urn:ws_interface
typedef struct ns__CommonResponse
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__CommonResponse;
typedef struct ns__AddGroupRequest
{
char *validationCode;
char *name;
char *desc;
} ns__AddGroupRequest;
typedef struct ns__DelGroupRequest
{
char *validationCode;
char *name;
} ns__DelGroupRequest;
typedef struct ns__CommonResponse ns__AddGroupResponse;
int ns__AddGroup(
ns__AddGroupRequest *AddGroup,
ns__AddGroupResponse *AddGroupResponse );
typedef struct ns__CommonResponse ns__DelGroupResponse;
int ns__DelGroup(
ns__DelGroupRequest *DelGroupRequest,
ns__DelGroupResponse *DelGroupResponse );
#endif
关于gsoap生成的返回值
自定义头文件group.htypedef struct ns__CommonResponse111111111
{
int returnFlag;
char *msg; // message to descript the return_flag
} ns__CommonResponse2222222222;
typedef struct ns__AddGroupRequest
{
char *validationCode;
char *name;
char *desc;
} ns__AddGroupRequest;
int ns__AddGroup(
ns__AddGroupRequest *AddGroupRequest,
ns__CommonResponse2222222222 *CommonResponse );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
然后用如下命令生成.c文件:
soapcpp2 -S -c group.h
程序运行时,返回的数据被CommonResponse2222222222包裹:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:ws_account"><SOAP-ENV:Body
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ns:CommonResponse2222222222>
<returnFlag>-460</returnFlag>
<msg>group name is empty</msg>
</ns:CommonResponse2222222222>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
注意:soapcpp2 -S -c group.h命令生成的样例res.xml中数据是被CommonResponse111111111包裹,与实际运行程序后生成的数据不符
相关文章推荐
- 用iBator工具生成Ibatis相关类包,其中Example类文件的Criteria类无法使用的问题
- gSoap使用入门(1)----由wsdl文件生成头文件
- gSoap使用入门(1)----由wsdl文件生成头文件
- gSoap使用入门(1)----由wsdl文件生成头文件
- gsoap 学习 1-由wsdl文件生成h头文件
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)
- 使用CXF将wsdl文件生成客户端代码命令
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
- 使用phpExcel类导出excel文件相关问题总结
- php学习之道:php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- MyEclipse使用JAX-WS 2.0生成WebService报错,无法生成WSDL文件
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- 关于Windows Service 中使用NLog无法生成日志文件的问题
- 解决visual 2008中error PRJ0003 : 生成 cmd.exe 时出错”的问题---(使用优化大师清理文件之后)
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件