Gsoap 使用心得 2
Gsoap 返回图片byte的困惑
前些日子刚使用gsoap将二进制文件上传(服务期端使用c# wcf 编写),上传功能实现没有问题.
这几天又要接收从服务器端接收图片的byte数据.困惑了好几天,最终在Bill wang的帮助下解决问题.
总结以下,但愿能对有同样遭遇的兄弟有所帮助.
1、返回byte数据
c++调用代码如下:
struct _ns1__USCOREGetPicture getPicture;
struct _ns1__USCOREGetPictureResponse getPictureR; xsd__base64Binary *image; getPicture.pictureName="1.png";
getPicture.soap=&clientSOAP; pgcFile.soap_endpoint=strurlpath.c_str(); int soapResultTest=pgcFile.USCOREGetPicture(&getPicture,&getPictureR);
image=getPictureR.USCOREGetPictureResult; FILE *fp_binary = fopen("C:\\2.jpg", "wb");
fwrite(image->__ptr, , image->__size, fp_binary);
fclose (fp_binary);
//直接存成文件没有问题,问题得到解决
1.1 出现问题:
困惑的地方:image->__ptr=" j"只有这些数据, 而image->__size=1987256 正确没有问题.
1.2 处理问题过程:
当时候一看到image->__ptr值后,困惑,就直接考虑返回的图片的其他数据都到那去了(走了弯路)开始怀疑是c#服务端的问题,找了抓包工具,把soap包抓下来分析下,服务器端传过来的数据没有问题,是正确的。 (后来经过Bill wang的帮助,其实不用包抓那么麻烦,stdsoap2.h:819 取消注释即可,生成debug 日志文件)调试到当soap中的base64数据被反base64时,所有数据都被反编码成byte,存储到了char * soap->labbuf 中。数据image->__ptr=" j",非常困惑,为什么所有编码都成功了,数据还是他image->__ptr=" j"。
1.3 结论:(不一定正确,请高手指点)
由于图片二进制数据,所以会有单byte为00的编码,char * 字符串遇到 00 标记为字符串结束,所以显示image->__ptr=" j"。而实际字符串已经全部转码,存储到了物理的实际位置。所以使用编码首地址+实际长度,可以取到正确数据。而不能直接取image->__ptr的数据。
2、剩余困惑
gsoap中soap->buf存放soap数据,而他的大小默认65535,但是我2w的图片数据传输正确?
请高手指点!!
在此感谢Bill wang的帮助。
Gsoap 使用心得 2的更多相关文章
- [转贴]gsoap使用心得!
		
最近换了个工作环境,现在在大望路这边上班,呵,刚上班接到的任务就是熟悉gsoap!废话少说,现在开始gSoap学习! gSOAP是一个夸平台的,用于开发Web Service服务端和客户端的工具,在W ...
 - gsoap 学习 1-如何使用
		
新年伊始,想把onvif和gsoap boa这三个东西学习下,并作下笔记,当然为了省时间,我昨天下午看了一个下午的gsaop官网pdf感触良多,也做了小测试,废话少说,一下也有一些是摘自网友博客,大部 ...
 - gSOAP 使用WebServer心得
		
关于正常怎么使用gSOAP的话,下面那篇博客已经讲得非常详细,我就不再赘述了 https://www.cnblogs.com/dengpeng1004/p/6165751.html 问题1: WCF ...
 - 我的MYSQL学习心得(一) 简单语法
		
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
 - NoSql数据库使用半年后在设计上面的一些心得
		
NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...
 - 我的MYSQL学习心得(二) 数据类型宽度
		
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
 - 我的MYSQL学习心得(三) 查看字段长度
		
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
 - 我的MYSQL学习心得(四) 数据类型
		
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
 - 我的MYSQL学习心得(五) 运算符
		
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
 
随机推荐
- 联想S720/S720i通刷刷机包 Vibe V1.0
			
ROM介绍 基于官方最新S116底包制作,保证足够的稳定性. 增加VIBE元素,看起来更加大气.美观. 首次增加VIBE元素,720i执行起来无压力,720可能会有点卡.自行酌情刷入. 有bug请文明 ...
 - MinGW gcc 生成动态链接库 dll 的一些问题汇总 (补充)
			
我以前写过一个小短文,介绍MinGW gcc 生成动态链接库 dll 的一些问题.当时写的并不全面.近期又遇到写新的问题.这里记录一下,做个补充. 通常情况下,dll 中的函数假设採用 _stdcal ...
 - IOS obj-c、c、c++混编
			
今天发现这个问题,上网找了一下资料,发现原来如下: .m 文件可以混合c 和 objective-c 代码 .mm 文件可以混合 c c++ objective-c 代码 .c .cpp 不能混 ...
 - /etc/ld.so.conf详解
			
/etc/ld.so.conf 此文件记录了编译时使用的动态库的路径,也就是加载so库的路径. 默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装 ...
 - iOS  相互引用引起内存泄露问题说明
			
release动作只会对自身计数减一,而不会对属性发出release消息,只有该对象的引用计数为0,系统才会对该对象的所有属性发出release消息 类A的属性有类B,类B的属性有类A,而且两者都是强 ...
 - URAL 1081	 Binary Lexicographic Sequence
			
第13个位置第5个Bit :13>num[4] =>1 第四个bit 13-num[4]=5 :5<num[3] =>0 ,3-1 第三个Bit 5>num[2](3) ...
 - 上一篇下一篇 排序 (非ID字段排序)
			
网上看了很多关于"上一篇下篇"的文章,可大都是按ID排序. 实际上,很少有按ID排序的. 分享下我的单独排序字段的写法,主要分为ms sql2000 和 ms 2005及以上版本. ...
 - java 汉字转拼音
			
先决条件: pinyin4j.jar(Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制.) 下载地址:http://pan.baidu.com/share/l ...
 - Oracle Enterprise Manager 11g 输入用户名和口令 点击“登录”按键后没反应,也不报错,是什么原因?
			
在tnsnames.ora文件中检查设置好像没什么问题,用sqlplus也可以正常操作orcl 问题找到了,其实可简单,https://localhost:1158/em/console/logon/ ...
 - HOOK API(二)—— HOOK自己程序的 MessageBox
			
HOOK API(二) —— HOOK自己程序的 MessageBox 0x00 前言 以下将给出一个简单的例子,作为HOOK API的入门.这里是HOOK 自己程序的MessageBox,即将自己程 ...