首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大量数据从servlet传输到android应用程序

将大量数据从servlet传输到android应用程序
EN

Stack Overflow用户
提问于 2011-07-13 12:57:40
回答 5查看 1.7K关注 0票数 3

我正在开发一个android应用程序,其中我必须将位图存储在远程服务器中。步骤如下:

步骤1:将位图转换为字节数组,并将其从安卓应用程序发送到服务器,我将位图作为MultipartEntity.In服务器端发送,我将在doPost()方法中接收位图。

步骤2:将存储在database.Bitmap中的字节数组存储为blob数据类型,我能够将接收到的字节数组存储到mysql数据库中。

步骤3:检索存储为blob的位图并将其发送回android应用程序,我能够检索blob并转换为字节数组并发送。

我的问题

问题是从服务器发送的数据是以小batches.The格式接收的,图像长度为1380,但接收的长度为10,50,100‘。当我将得到的数据加在一起时,只有1345个,丢失了几个字节的数据。我在接收端张贴代码。

代码语言:javascript
复制
URL url = new URL( "http://10.0.2.2:8080/ServerPartProject/BlobGetter");
 URLConnection yc = url.openConnection();              
 BufferedReader in = new BufferedReader(new       InputStreamReader(yc.getInputStream()));                                                      String data;
 int val=0; 
 while((data=in.readLine())!=null){
    val=val+data.length();  //The data.length is like 10,20..
 }
 System.out.println("Total value obtained is "+val);//val was 1345 where it should be 1380

发送端:

代码语言:javascript
复制
OutputStreamWriter writer = new OutputStreamWriter(response.getOutputStream());
writer.write(senddata);

如何全身心地接受它?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-13 13:04:26

不要使用readLine()。您正在处理原始数据。原始数据不只有文本所包含的行。

您的一些字节可能被转换为2字节unicode字符,这解释了您感觉到的数据丢失。

票数 1
EN

Stack Overflow用户

发布于 2011-07-13 13:09:04

我将避免使用面向字符的读取器和作家来发送和接收图像数据(如果您是base64编码或其他什么您没有提到的,请忽略这一点,这大概是二进制的)。字节被解释为字符,转换回字节,然后再次解释为字符,最后返回到字节;在此过程中图像数据被破坏。使用Http对象提供的InputStream/OutputStream接口,而不是将读取器和Writers放在上面。

票数 1
EN

Stack Overflow用户

发布于 2011-07-13 13:09:32

您正在使用readLine()读取字节数据,这至少是一个奇怪的问题。在您的示例代码中,您不会关闭您的阅读器(应该是InputStreams)。缓冲输入可能会在缓冲区中留下一些字节,直到刷新或关闭时才会被读取。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6679256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档