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学习心得(四) 数据 ...
随机推荐
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
[题目链接] http://poj.org/problem?id=1222 [题目大意] 给出一个6*5的矩阵,由0和1构成,要求将其全部变成0,每个格子和周围的四个格子联动,就是说,如果一个格子变了 ...
- java课程设计(计算器)
JAVA课程 设 计 报 告 1206401-18 瞿杰 一.设计时间 2013年6月 24日-----6月28日 二.设计地点 湖南城市学院实验楼计算机506机房 三.设计目的 1.巩固学习VB ...
- 从头開始写项目Makefile(七):统一目标输出文件夹
[版权声明:转载请保留出处:blog.csdn.net/gentleliu. Mail:shallnew at 163 dot com] 上一节我们把规则单独提取出来,方便了Makefile的 ...
- 基于 dbms_redefinition 在线重定义表
Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL.DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的.当然在线重定 ...
- android 围绕中心旋转动画
本文主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果 ...
- HTML技术简介
1.DHTML:"Dynamic HTML"动态HTML技术的简称.DHTML并不是一项新技术,而是HTML,CSS,JavaScript技术组合的术语.DHTML背后的含义是: ...
- 用css3画企鹅
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...
- input输入框只能输入数字的功能
Html代码 收藏代码 <input type="text" style="ime-mode:disabled;" onpaste="retur ...
- UVa 12299 RMQ with Shifts(线段树)
线段树,没了.. ----------------------------------------------------------------------------------------- # ...
- JS 获取浏览器窗口大小clientWidth、offsetWidth、scrollWidth
常用: JS 获取浏览器窗口大小 // 获取窗口宽度 if (windows.innerWidth) winWidth = windows.innerWidth; else if ((docume ...