AIX5.3环境下C/C++实现WebService客户端的方法(gSOAP)

1、  软件选型

l  AXIS2/C 据考证没有在AIX上成功部署的先例,主要原因是编译后其动态调用的类库.a,无法加载。

l  gSOAP最新版,经过测试,其最新版2.7.11无法在AIX5.3下编译通过,主要原因是gSOAP2.7.11编译时使用的bisonGNU 2.3)、flex2.5.4)类库与AIX上所能提供的bison1.875)、flex2.5.4)版本存在差异。AIX自带的yacclex也无法实现。

l  gSOAP2.7.9d,经过测试,该版本做一定修改后即可部署成功。

修改内容:${GSOAP_HOME}/soapcpp2/src/soapcpp2_lex.l 794行的“// FIXME if (!lflag)”移除即可。

2、  环境配置(需要root权限,进行操作)

为了完成编译需要以下类库,IBM RPMftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/下载:

l  automake-1.8.5-1.aix5.1.noarch.rpm automake-1.6.3.tar.gz

1)  如果采用IBM提供的RPM,则安装完后,需要ln /usr/bin/automake/bin/automake-1.8 /usr/bin/automake/bin/automake-1.6 ln /usr/bin/automake/bin/aclocal-1.8 /usr/bin/automake/bin/aclocal-1.6

2)  如果采用automake-1.6.3.tar.gz,安装完后需要chmod相应执行权限。

l  autoconf-2.59-1.aix5.1.noarch.rpm

l  bison-1.875-3.aix5.1.ppc.rpm

l  flex-2.5.4a-6.aix4.3.ppc.rpm

l  m4-1.4.1-1.aix5.1.ppc.rpm

安装方法:rpm –ivh *rpm

gSOAP编译部署方法:

./configure –prefix=${GSOAP_HOME}

./make

./make install

3、  客户端编写

客户端编写需要服务wsdl描述文件。

代码产生步骤(产生C代码):

${GSOAP_HOME}/bin/wsdl2h –c *.wsdl

${GSOAP_HOME}/bin/soapcpp2 –c *.h

编写Client如下:

#include "soapH.h"

#include "ServPWDServiceHttpBinding.nsmap"

int main()

{

struct soap soap;

struct _ns1__CheckServPWDResponse ret;

struct _ns1__CheckServPWD seg={"0351","899","6067","123456"};

const char * endPoints = "http://133.128.9.23:7007/New97WebServices/ServPWDServi

ce";

soap_init(&soap);

if (soap_call___ns1__CheckServPWD(&soap, endPoints, NULL, &seg, &ret) == SOAP_OK

)

printf("%s/n", ret.out);

else

soap_print_fault(&soap, stderr);

soap_destroy(&soap);

soap_end(&soap);

soap_done(&soap);

return 0;

}

编写Makefile文件如下:

GSOAP_PATH=/bea/leofan/gsoap-2.7

CC=gcc

COFLAGS=-g -O2 -c

CWFLAGS=-Wall

CIFLAGS=-I. -I${GSOAP_PATH}/include

CMFLAGS=

CFLAGS= $(CWFLAGS) $(COFLAGS) $(CIFLAGS) $(CMFLAGS)

BIN=ServPWDServiceClient

SOURCE=ServPWDServiceClient.c

SOAPCLIENT_SOURCE=soapClient.c

SOAPC_SOURCE=soapC.c

OBJ=ServPWDServiceClient.o soapClient.o soapC.o

 

.PHONY: all

 

all: $(BIN)

 

$(OBJ):

        $(CC) $(CFLAGS) $(SOURCE)

        $(CC) $(CFLAGS) $(SOAPCLIENT_SOURCE)

        $(CC) $(CFLAGS) $(SOAPC_SOURCE)

$(BIN): $(OBJ)

        $(CC) -g -O2 -o $(BIN) $(OBJ) $(GSOAP_PATH)/lib/libgsoap.a

clean:

        rm -f $(OBJ) $(BIN)

 

最后make即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值