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学习心得(四) 数据 ...
随机推荐
- 如何注册成为uber司机 快速成为优步司机网上注册流程攻略 2015最新
[目前开通Uber的城市]:北京.上海.天津.广州.成都.深圳.杭州.重庆.武汉.青岛.南京.苏州.长沙.宁波.西安.佛山等.济南,烟台和厦门正在秘密的招第一批司机. [车辆要求]:要求裸车价8万以上 ...
- GitHub Linux下使用方法
1. 在网站注册帐号,创建工程 test 进入工程,右下角会有一个项目仓库的地址.https://github.com/braverior/test.git 2.Linux下 安装github sud ...
- hbase0.96 put流程 源码分析
无意间多瞄了一眼hbase0.98的代码,想复习下put流程.发现htable里面已经找不到processBatchOfPuts()奇怪了.看了半天原来变化还真大事实上0.96就没这个了,于是又搞了个 ...
- 杭州电子科技大学Online Judge 之 “确定比赛名次(ID1285)”解题报告
杭州电子科技大学Online Judge 之 "确定比赛名次(ID1285)"解题报告 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozh ...
- Objective-c 字典对象
oc 中的 NSDictionary 的作用同 java 中的字典类相同,提供了 “键-值”对的组合.比如,是用字典类实现对学生姓名和学号的存放,编号是一个键(唯一性),姓名是值.它的方法有: 下面通 ...
- UVa10082 WERTYU
#include <stdio.h>#include <string.h> int main(){ // 用C++提交AC char s[] = "`12345 ...
- C++的常量折叠(二)
前面的C++的常量折叠(一)的最后留下了一个问题,那就是在声明i的时候,加上修饰符volatile关键字,发现结果输出的就不一样了,下面来说一下volatile这个关键字. C/C++中的volati ...
- Oracle 批量造数据
1.通过存储过程方式 CREATE OR REPLACE procedure XXZY.p_test is i number; begin .. loop INSERT INTO test_job V ...
- 微软Xbox360 E与微软Xbox360 slim Kinect套装(1TB)哪个好
原文地址:http://product.pchome.net/digi_home_playstation_microsoft_xbox360slimkinect1tb/381793.html 微软Xb ...
- MFC消息截获之pretranslatemessage
前几天,查了一个batch的问题,问题大致是这样,父窗口消息一个鼠标消息,弹出一个模态框,CPU负荷就飚升到100%(双核就是50%),非常怪异,用windbg,分析哪个线程占用CPU,定位到鼠标响应 ...