-
android 的 httpclient 和自己的web服务器之间有较多的数据传输,传输不完全5
因为我同时传输的是几张图片,图片我先转换成base64编码的字符串了和一些文字的混合流,然后我发现这边接收的字符串信息不完全。请问该如何搞定这个问题,万分感谢。
我在logcat特意观察过接收到的数据只有很少一部分。
问题补充:贴上源代码和错误信息
安卓客户端部分网络传输源代码
package edu.whu.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
public class HttpUtil implements Runnable {
public static String httpUrl = "http://192.168.1.139:8080/Web/";
public static String result = "";
public static Bitmap bitmap = null;
public String url = null;
List<NameValuePair> list;
public HttpUtil(String url, List<NameValuePair> list) {
this.list = list;
this.url = url;
}
@Override
public void run() {
try {
// http post连接对象url
HttpPost httppost = new HttpPost(url);
// 设置字符集
HttpEntity httpentity = new UrlEncodedFormEntity(list, "utf-8");
// 设置查询参数
httppost.setEntity(httpentity);
// 创建一个http连接实例
HttpClient httpclient = new DefaultHttpClient();
// 取得默认的查询结果实例
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 取得返回的字符串
result = EntityUtils.toString(response.getEntity());
String tag = null;
Log.v(tag, result);
// bitmap=BitmapFactory.decodeFile(result);
/* // 取得图片字节流
HttpEntity httpEntity = response.getEntity();
InputStream is = httpEntity.getContent();
bitmap = BitmapFactory.decodeStream(is);
is.close();*/
} else {
result = "请求错误!";
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器输出源代码:
package servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import util.ImageOutput;
import dao.Bookdao;
import dao.daoimpl.BookdaoImpl;
import entity.Book;
public class ShowServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//@Override
//public void service(HttpServletRequest req, HttpServletResponse resp)
// throws ServletException, IOException {
// Bookdao bookdao = new BookdaoImpl();
// List<Book> list = bookdao.findAllBook();
// // 将内容拼接成相应格式的字符串,其中没一组之间用分号分割,每一项之间用逗号分割。图片读取其信息并采用
// // Base64编码传输
// String out = null;
//
// for (Book book : list) {
// String pic = null;
// pic = book.getPic();
// System.out.print(pic);
// ImageOutput imageoutput = new ImageOutput("/home/shenlei/tupian/"+pic, resp);
// String pictostring = imageoutput.GetImageStr();
// out = out + book.getPrice() + "," + book.getName() + "," + pictostring
// + ";";
// }
// PrintWriter outs = resp.getWriter();
// outs.print("<html>");
// outs.print("<body>");
// outs.print("helloworld");
// outs.print("</body>");
// outs.print("</html>");
//}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
Bookdao bookdao = new BookdaoImpl();
List<Book> list = bookdao.findAllBook();
// 将内容拼接成相应格式的字符串,其中没一组之间用分号分割,每一项之间用逗号分割。图片读取其信息并采用
// Base64编码传输
String out = "";
for (Book book : list) {
String pic = "";
pic = book.getPic();
// System.out.print(pic);
ImageOutput imageoutput = new ImageOutput("/home/shenlei/tupian/"+pic, resp);
String pictostring = imageoutput.GetImageStr();
out = out + book.getPrice() + "," + book.getName() + "," + pictostring
+ ";";
}
PrintWriter outs = resp.getWriter();
outs.print(out);
outs.flush();
}
}
问题补充:现在提示的是文件无法解析,不可能啊,我测试过这个方法可用的
07-29 11:53:25.618: E/BitmapFactory(30557): Unable to decode stream: FileNotFoundException
07-29 11:53:25.618: I/System.out(30557): resolveUri failed on bad bitmap uri: android.graphics.drawable.BitmapDrawable@41ff25382014年7月29日 09:08
目前还没有答案
相关推荐
3. **httpclient-4.5.6.jar**: 这是HttpClient的较新版本,相对于commons-httpclient,它有更多改进和优化,包括更好的性能、更完善的错误处理、对HTTPS的支持以及对HTTP/1.1和HTTP/2的兼容性。 4. **ksoap2-...
在Android中,HttpClient库提供了与Web服务器进行HTTP通信的能力,支持各种HTTP方法(如GET、POST等),以及处理cookies、重定向、认证等功能。这个"HttpClient for android 4.3.5 jar"包含了两个文件:`httpclient-...
- `HttpClient`和`HttpURLConnection`:在Android中,可以通过这两种方式发送HTTP请求到Web服务器,获取返回的JSON数据。`HttpClient`已被弃用,但仍在一些旧版本中使用,而`HttpURLConnection`是目前推荐的网络...
Android客户端与Web Service交互的核心机制是HTTP协议,因为它是互联网上应用最广泛的数据传输协议。Android提供了多种方式来实现这一目标,其中最常用的是使用HTTP客户端库,如HttpURLConnection、HttpClient(已...
7. **安全性**:由于涉及到HTTPS,这意味着数据传输应该是加密的,确保在传输过程中不被窃取。在Android端,可以使用`HttpsURLConnection`,而在服务器端,需要配置SSL证书来启用HTTPS服务。 8. **权限管理**:...
在Android开发中,Apache的相关组件,如HttpClient,常被用于实现网络请求和数据传输。Apache HttpClient提供了一套强大的API,可以让开发者方便地发送HTTP请求并接收响应。此外,Apache Commons库也包含许多实用的...
在Android开发中,HTTP通信是应用与服务器交互的重要方式,用于获取或发送数据。本资料“Android-HTTP.rar”提供了一个关于Android平台下HTTP通信的精彩总结,旨在帮助开发者理解和实现高效的网络请求。 首先,我们...
HTTP(HyperText Transfer Protocol)是应用层协议,用于在Web浏览器和Web服务器之间交换数据。它基于TCP/IP协议栈,确保数据的可靠传输。HTTP协议的版本主要有HTTP/1.0和HTTP/1.1。HTTP/1.0是早期版本,而HTTP/1.1...
- **网络传输安全**:使用HTTPS协议进行数据传输,确保数据的安全性和完整性。 综上所述,《Android开发艺术探索》这本书涵盖了从Android开发的基础知识到高级技术的各个方面,对于希望深入了解Android开发技术的...
通过网络请求,应用程序可以与服务器进行数据交互,实现更多的功能和服务。本文将详细介绍Android开发中常用的几种网络请求方式,并以GET和POST请求为例进行具体说明。 #### 一、Android网络请求的基础概念 在开始...
HTTP(超文本传输协议)是互联网上应用最为广泛的一种服务,用于从Web服务器传输超文本到本地浏览器。在Android开发中,理解如何使用HTTP请求获取网络数据是至关重要的,这包括发送GET和POST请求、处理响应以及解析...
FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上...