android-Http stream read 读取字节问题

问题描述

Http stream read 读取字节问题

大家好,请教个问题:
使用HttpURLConnection从字节流中读取服务器过来的内容,发现在Android5.1.1的设备上,最多只能读取到8192字节。
同样的APP,放到Android4.4.4的另一个设备上,同样情况下则可以读取超过8192多得多的数据。
不知道是不是由于两个android版本不同,使用的Http lib不一样导致buffer size设置不一样。但是又找不到修改buffer size的地方。请大神们帮忙看看,谢谢!
代码如下:
InputStream inStream = http.getInputStream();
byte[] buffer = new byte[1024*64];
int readBytes = 0;

try{
while((readBytes = inStream.read(buffer, 0, buffer.length)) != -1 && !cancelled){
Log.debug(this, "writeToFileMapping readBytes = " + readBytes);
threadfile.write(buffer, 0, readBytes);
downLength += readBytes;
resetRetryTimes = true;
}
}finally{
close(threadfile);
close(inStream);
}
}

解决方案

read方法读的流:不能保证每次读到你想要的长度,只能保证每次读取等于或者小于你要读取的长度

解决方案二:

http头部有一个ua字段标识客户端(服务器根据这个判断是Android/iPhone/电脑),有可能是这个造成的,对Android 5/4,服务器可能为设备特别定制一些东西 以确保网页以最佳模式显示。可以自己设置这个字段试试:
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Linux) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
这行代码将ua标识设置为Linux桌面,chrome浏览器

时间: 2024-09-11 18:58:48

android-Http stream read 读取字节问题的相关文章

文件读取-Android jni c++ 如何读取jni文件夹下的文件?

问题描述 Android jni c++ 如何读取jni文件夹下的文件? 在一个jni工程中,jni文件夹的结构如下: jni |--Android.mk |--Application.mk |--filer.h |--file.cpp |--res.txt file.cpp里边的代码如下: #include ""filer.h""#include <fstream>#include <string>using namespace std;j

摄像头-android 从socket中读取数据转换bitmap为空

问题描述 android 从socket中读取数据转换bitmap为空 用蓝牙传的,这是客户端用摄像头预览的数据 这是传数据的方法 这是服务端接收数据 日志上显示 D/skia: --- SkImageDecoder::Factory returned null 打印接收到的数据byte[] b时显示一排竖方框,这应该是乱码或者是空吧,是编码格式的问题? 解决方案 http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html

android-使用BufferedReader读取字节数

问题描述 使用BufferedReader读取字节数 我使用一个AsynkTast下载一套CSV lines,而且想要记录一共读入了多少字节. while ((string = bufferedReader.readLine()) != null){ bytesRead += ?;} 如何记录总字节数的行数?能否用OutputStream读出? 解决方案 在你的程序中添加: while ((string = br.readLine()) != null){ bytesRead += (strin

qt5-qt android 二维码读取?

问题描述 qt android 二维码读取? 使用 android 手机打开摄像头,能去读取二维码信息.读取到二维码信息后能连接网络加载二维码信息到列表中去. 解决方案 用zxing,连接网络用webview自己google下zxing android

nfc技术-Android中使用NFC读取NfcA类型的芯片,Apdu指令怎么获取?

问题描述 Android中使用NFC读取NfcA类型的芯片,Apdu指令怎么获取? Android中使用NFC读取NfcA类型的芯片,Apdu指令怎么获取?就是 byte[] response = mNfc.transceive(cmd);中的这个cmd命令! 解决方案 补充:芯片卡是NFC-A (ISO 14443-3A) TpyeA类型的,得到的Tag是android.nfc.tech.NfcA类型 解决方案二: 解决了吗?今天也遇到同样的问题了.求大神不吝赐教. 解决方案三: 楼上的解决了

cocos2dx3.x-Cocos3.x 移植到Android平台 xml文件读取出错,搞了两天了,大神们帮帮忙。求

问题描述 Cocos3.x 移植到Android平台 xml文件读取出错,搞了两天了,大神们帮帮忙.求 Cocos3.x 移植到Android平台 xml文件读取出错,搞了两天了,大神们帮帮忙.网上的代码也看完了,不顶用.想要个人来交流. 解决方案 顶起来,大神们,小弟今天是要离不开公司了.拜托了

模块化-Android画图表怎么读取数据

问题描述 Android画图表怎么读取数据 安卓可以用AChartEngine画各种图表,比如折线图.饼图.柱状图等,但是网上找到的程序都是直接把数据写到程序里,如何能够模块化,使得程度能够读取数据,直接画出饼图或柱状图,求高人指点???!!! 解决方案 你做一个提供数据源的模块就行了,比如从数据库或者http加载数据

as-AS3中的读取字节数组代码,怎么转成C#

问题描述 AS3中的读取字节数组代码,怎么转成C# var bytes:ByteArray=new ByteArray(); bytes.writeInt(10); bytes.writeUTF("123"); //AS3中使用下面两句可以读取了明文 trace(bytes.readInt()); trace(bytes.readUTF()); 用C#代码要怎么读出来??上面两句 解决方案 byte[] data = File.ReadAllBytes("x:xxx.bin&

oracle-从数据库读取字节数组的问题。

问题描述 从数据库读取字节数组的问题. 从Oracle数据库读取Long Raw列里面存储的图片.发现读取到的字节数组长度为0,而那条Select语句,却可以在Oracle SQL Developer 里面查找到一大串字符串.......很长很长的字符串.以前往Oracle里面存MP3,然后取出来.也是可以创建MP3文件,但是文件长度为0,估计也是这个因为从Oracle里面取出来的二进制字节数组,长度为0的原因. 求解答: 1.为什么取出来的字节数组长度为0,而我数据库里面明明有数据,SQL语句