我在程序里使用了CAtlHttpClient类,设置的请求方法是“POST”,期望得到的返回数据(除了http头)是: 文本信息1图片文件数据。其中数字1是用来分割两个数据区的
但奇怪的是,我能得到正确大小的数据,前段的文本信息是完全正常的,但后面的图片文件数据却是错误的。
但是,如果我让服务器端将“图片数据文件”改为一个文本文件数据,则一切又都是正常的
这实在让我很恼火。。
对了,通过抓包得知,请求的“图片文件数据”是正确的,但是是哟个CAtlHttpClient的getBody()方法得到的数据却不对。
请求高手指点!
但奇怪的是,我能得到正确大小的数据,前段的文本信息是完全正常的,但后面的图片文件数据却是错误的。
但是,如果我让服务器端将“图片数据文件”改为一个文本文件数据,则一切又都是正常的
这实在让我很恼火。。
对了,通过抓包得知,请求的“图片文件数据”是正确的,但是是哟个CAtlHttpClient的getBody()方法得到的数据却不对。
请求高手指点!
我用jsp写的web端就可以正常读到图片数据
但我现在是用MFC写的一个activex控件里用CAtlHttpClient这个类来做http客户端,是不是java和c++对待二进制数据还不一样呢!
由于server端传过来的数据是chunked编码的,CAtlHttpClient在从socket读取数据的时候因为某些二进制图片数据使得CAtlHttpClient类错认为停止符,因此只读取了前面很小一部分的数据,后面的数据都被丢弃了。
而java封装的http类对这个处理就不如C++那么敏感,因此jsp页面能够正常显示。
最后解决的办法是:用base64编码把发送的图片数据编码,全部转换为可识别的ASC码,接受端再解码,这样问题就解决了!
我想用CAtlHttpClient传一个大文件(比如>1G的文件), 但我见GetBody是一次性的返回所有的数据,
这样的话我就是分配一个大数组,这是不可能是的, 请问各位有没有其它的方法呢?