请求服务器图片并显示

1.客户端

 1 package com.jingle.requestimg;
 2 
 3 import org.apache.http.Header;
 4 
 5 import com.loopj.android.http.AsyncHttpClient;
 6 import com.loopj.android.http.AsyncHttpResponseHandler;
 7 import com.loopj.android.http.RequestParams;
 8 
 9 import android.app.Activity;
10 import android.graphics.Bitmap;
11 import android.graphics.BitmapFactory;
12 import android.os.Bundle;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 import android.widget.ImageView;
17 
18 public class MainActivity extends Activity {
19     private String url = "http://192.168.1.101:8080/Login/servlet/ReturnImg";
20 
21     private ImageView imageView;
22 
23     @Override
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_main);
27 
28         initImgView();
29         initBtn();
30     }
31 
32     private void initImgView() {
33         imageView = (ImageView) findViewById(R.id.img);
34     }
35 
36     private void initBtn() {
37         Button btn = (Button) findViewById(R.id.btn);
38         btn.setOnClickListener(new OnClickListener() {
39 
40             @Override
41             public void onClick(View v) {
42                 getServerImg();
43 
44             }
45         });
46     }
47 
48     private void getServerImg() {
49         AsyncHttpClient client = new AsyncHttpClient();
50         client.setTimeout(3000);
51         RequestParams params = new RequestParams();
52         params.put("img", "img");
53         client.post(url, params, new AsyncHttpResponseHandler() {
54 
55             @Override
56             public void onSuccess(int statusCode, Header[] headers,
57                     byte[] responseBody) {
58                 if (responseBody != null) {
59                     Bitmap bmp = BitmapFactory.decodeByteArray(responseBody, 0,
60                             responseBody.length);
61                     imageView.setImageBitmap(bmp);
62                 }
63             }
64 
65             public void onFailure(int statusCode, Header[] headers,
66                     byte[] responseBody, Throwable error) {
67                 error.printStackTrace();
68             }
69         });
70     }
71 
72 }

2.服务器端

 1 package action;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 
 6 import java.io.OutputStream;
 7 
 8 import javax.servlet.ServletException;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 public class ReturnImg extends HttpServlet {
14 
15     private static final long serialVersionUID = -70601451108821183L;
16     private static final String JPG = "image/jpeg;charset=GB2312";
17 
18     public void doGet(HttpServletRequest request, HttpServletResponse response)
19             throws ServletException, IOException {
20 
21         doPost(request, response);
22     }
23 
24     public void doPost(HttpServletRequest request, HttpServletResponse response)
25             throws ServletException, IOException {
26         System.out.println("do post");
27         String webRootUrl = request.getServletContext().getRealPath("")
28                 + "//guan.jpg";
29         if ("img".equals(request.getParameter("img"))) {
30 
31             FileInputStream fis = new FileInputStream(webRootUrl);
32             int size = fis.available();
33             byte[] data = new byte[size];
34             fis.read(data);
35             fis.close();
36             response.setContentType(JPG);
37             OutputStream os = response.getOutputStream();
38             os.write(data);
39             os.flush();
40             os.close();
41 
42         }
43 
44     }
45 
46 }
原文地址:https://www.cnblogs.com/jinglecode/p/4376538.html