android与web服务器,Android之与WEB服务器交换数据(转)

三、网络读取图片

服务器端:

先设计一个返回图片流的工具类

ImageUtil.java

package com.iflytek.util;

import java.awt.image.BufferedImage;

import java.io.FileInputStream;

import java.io.IOException;

import java.text.MessageFormat;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletResponse;

public class ImageUtil {

public static void showImage(HttpServletResponse response, String

path,

String type) {

try {

ServletOutputStream outStream = response.getOutputStream();//

得到向客户端输出二进制数据的对象

FileInputStream fis = new FileInputStream(path); //

以byte流的方式打开文件

// 读数据

byte data[] = new byte[1000];

while (fis.read(data) > 0) {

outStream.write(data);

}

fis.close();

response.setContentType(MessageFormat.format("image/{0}", type));

// 设置返回的文件类型

outStream.write(data); // 输出数据

outStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void showImage(HttpServletResponse response, byte[]

data,

String type) {

try {

ServletOutputStream outStream = response.getOutputStream();//

得到向客户端输出二进制数据的对象

// 读数据

outStream.write(data);

response.setContentType(MessageFormat.format("image/{0}", type));

// 设置返回的文件类型

outStream.write(data); // 输出数据

outStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

AndroidServlet.java

package com.iflytek.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.iflytek.util.ImageUtil;

public class AndroidServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public AndroidServlet() {

// TODO Auto-generated constructor stub

}

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

{

// TODO Auto-generated method stub

}

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

{

// TODO Auto-generated method stub

ImageUtil.showImage(response,

getServletContext().getRealPath("Java.jpg"), "jpeg");

}

}

Android客户端:

Web03_Activity.java

package com.iflytek.demo;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.AsyncTask;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.ImageView;

public class Web03_Activity extends Activity {

private ImageView iamgeView = null;

private static final String PATH =

"http://IP:8080/09AndroidWeb/Java.jpg"; // 请求地址

private Bitmap bitmap;

public Handler handler = new Handler() {

@Override

public void handleMessage(android.os.Message msg) {

super.handleMessage(msg);

switch (msg.what) {

case 1:

try {

iamgeView.setImageBitmap(bitmap);

} catch (Exception e) {

}

break;

default:

break;

}

}

};

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.iamgeView = (ImageView) super.findViewById(R.id.img);

this.HttpHelper();

}

private void HttpHelper() {

final AsyncTask< Void, Void, String> task = new AsyncTask<

Void, Void, String>() {

@Override

protected void onPostExecute(String result) {

Thread thread = new Thread(new Runnable() {

@Override

public void run() {

Message msg = new Message();

msg.what = 1;

handler.sendMessage(msg);

}

});

thread.start();

}

@Override

protected void onPreExecute() {

super.onPreExecute();

}

@Override

protected String doInBackground(Void... arg0) {

ByteArrayOutputStream bos = null; // 内存操作流完成

try {

URL url = new URL(PATH);

HttpURLConnection conn = (HttpURLConnection) url

.openConnection();

conn.connect();

InputStream input = conn.getInputStream();

bitmap = BitmapFactory.decodeStream(input);

// bos = new ByteArrayOutputStream();

// byte data[] = new byte[1024];

// int len = 0;

// while ((len = input.read(data)) != -1) {

// bos.write(data, 0, len);

// }

// byte resultData[] = bos.toByteArray();

// bitmap = BitmapFactory.decodeByteArray(resultData, 0,

// resultData.length); // 把二进制变为图片

} catch (Exception e) {

} finally {

if (bos != null) {

try {

bos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

};

task.execute();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值