axis2c 做的客户端程序接收基于Axis2 java的Webservice服务返回的超长字符串
来源:互联网 发布:淘宝网电表箱装饰画 编辑:程序博客网 时间:2024/04/29 09:44
问题描述:
axis2c写的客户端程序与java开发的Webservice服务器端程序进行交互时,若WebService服务端的接口返回一个超长字符串,在服务器端使用String作为返回类型。当客户端请求该服务时,该服务会在服务端运行且运行得到结果是正确的,但在客户端接收的该字符串为null. 为什么请求可以被执行且结果是正确的,但该字符串无法正确的返回到客户端。
解决方法:
在服务器端Webservice不使用String作为返回类型,而选择byte[]。客户端利用axis2c工具生成Stub
eg:
java WSDL2C -uri interoptestdoclitparameters.wsdl -d adb -u
或不使用adb数据绑定方式
java WSDL2C -uri interoptestdoclitparameters.wsdl -d none
在编写客户端代码时,调用类似以下函数adb_getDepStringResponse_get_return ,返回一个axutil_base64_binary_t* 类型的指针数据 ,而不是对应于服务器端得返回类型为String的char *。在处理axutil_base64_binary_t* 类型的指针数据时,可以参照下面的方法得到我们想要的char * 类型的数据。
adb_getDepStringResponse_t * depStringRes = NULL ;
axis2_char_t* str = NULL ;
char * base64Str = NULL ;
axutil_base64_binary_t * baseStrRes = NULL ;
int len ;
baseStrRes = adb_getDepStringResponse_get_return( depStringRes, env);
printf("The getDeptString len : %d/n" ,axutil_base64_binary_get_decoded_binary_len( baseStrRes, env));
base64Str = axutil_base64_binary_get_encoded_binary( baseStrRes, env) ;
//printf("The getDeptString : %s/n" ,axutil_base64_binary_get_encoded_binary( baseStrRes, env));
//返回字符串的长度
*len = axutil_base64_decode_len(base64Str) ;
printf("the len is %d /n" ,*len) ;
//返回的字符串
*str = (char *)malloc(sizeof(char)*(*len+1)) ; //内存分配为len+1
axutil_base64_decode( *str, base64Str);
printf("The ExportTree : %s/n" ,*str);
- axis2c 做的客户端程序接收基于Axis2 java的Webservice服务返回的超长字符串
- 使用Axis2用Java实现调用WebService的客户端程序
- JAVA AXIS2 WEBSERVICE JAVA客户端的编写
- 基于axis2的webservice
- axis2客户端调用免费的webservice服务的实例
- 利用Axis2开发WebService(3)---用Java实现调用WebService的客户端程序
- 利用Axis2开发WebService(3)---用Java实现调用WebService的客户端程序
- 利用Axis2开发WebService(3)---用Java实现调用WebService的客户端程序
- 基于axis2的WebService获取客户端请求IP地址
- axis2客户端调用免费的webservice服务的实例之一通过wsdl生成客户端程序并本地调用
- 【webservice】生成axis2的webservice客户端代码
- axis2客户端调用免费的webservice服务的实例之三axis2使用RPC方式调用网上免费WebService
- Android调用Java EE+axis2搭建的webservice服务详解
- 基于axis2的基本java对象webservice发布
- Axis2使用WebService的客户端实例
- Axis2开发webservice客户端的方式
- Axis2 WebService客户端的三种方式
- 基于Java的WebService的客户端开发
- 使用cocoa时必须遵守MVC的思想
- 嵌入式ARM移植之三:移植 linux-2.6.26 内核
- linux之ln命令
- ASP.NET性能优化的方法总结
- 由于未能创建 microsoft visual c 2008 编译器 未能打开项目(成功解决方案)
- axis2c 做的客户端程序接收基于Axis2 java的Webservice服务返回的超长字符串
- WCF4.0新特性体验(9):非破坏性队列消息接收(Non-destructive queue receive )
- 开博留念
- 2010年4月2日,关于网页压缩的问题。
- 已到清明
- 我常用的TXT书站网址分享
- VC++调试内存泄漏简单方法
- 淘宝开放数据与网购生态闭环
- 第一篇博文.