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的更多相关文章

  1. [转贴]gsoap使用心得!

    最近换了个工作环境,现在在大望路这边上班,呵,刚上班接到的任务就是熟悉gsoap!废话少说,现在开始gSoap学习! gSOAP是一个夸平台的,用于开发Web Service服务端和客户端的工具,在W ...

  2. gsoap 学习 1-如何使用

    新年伊始,想把onvif和gsoap boa这三个东西学习下,并作下笔记,当然为了省时间,我昨天下午看了一个下午的gsaop官网pdf感触良多,也做了小测试,废话少说,一下也有一些是摘自网友博客,大部 ...

  3. gSOAP 使用WebServer心得

    关于正常怎么使用gSOAP的话,下面那篇博客已经讲得非常详细,我就不再赘述了 https://www.cnblogs.com/dengpeng1004/p/6165751.html 问题1: WCF ...

  4. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

  6. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  9. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

随机推荐

  1. 【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结

    转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁 ...

  2. NYOJ 14 会场安排问题(也算是经典问题了)

    会场安排问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就 ...

  3. Kate Spade_百度百科

    Kate Spade_百度百科 Kate Spade

  4. android UI进阶之用【转】

    android UI进阶之用ViewPager实现欢迎引导页面 摘要: ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包.大家搜下即可. ...

  5. Swift和Objective-C混合编程

    假设你现在就是一个iOS程序员,你对Objective-C很熟悉,对iOS开发也很熟悉,然而,苹果公司在iOS 8之后推出了Swift语言.那么,如何才能快速地从Objective-C过渡到Swift ...

  6. Glog

    Glog的简单入门,glog虽然在配置参数方面比较麻烦,但是在小规模程序中,由于其简单灵活,也许会有优势. 0,  glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活 ...

  7. sql表连接的几种方式

    这里有两张表TableA和TableB,分别是姓名表和年龄表,用于我们例子的测试数据 TableA id name 1 t1 2 t2 4 t4 TableB id age 1 18 2 20 3 1 ...

  8. GDI+ 对象释放崩溃的问题

    确保在Gdiplus::GdiplusShutdown(m_gdiplusToken); 之前delete 掉GDI+的对象,例如:delete *pBitmap; 如果先Gdiplus::Gdipl ...

  9. BZOJ 1207: [HNOI2004]打鼹鼠( dp )

    dp.. dp[ i ] = max( dp[ j ] + 1 ) ------------------------------------------------------------------ ...

  10. C++运算符详解问题详解

    有关C++运算符的细节,先来看一个题目: int main() { int a[] = {2, 4, 6, 8, 10}, *p, **k; p = a; k = &p; printf(&qu ...