首先,验证码图片的控件,需要我们自定义.
定义一个方法, 它能够根据传入的URL 来加载图片, 并且将响应头中的Session 保存起来, 因为我们在登陆的时候必须要携带这个Session信息请求服务器.
自定义的<ImageView>
package com.yb.logexc.view;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.widget.ImageView;
public class MyImageView extends ImageView{
public MyImageView(Context context) {
super(context);
}
public MyImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
Bitmap bitmap = (Bitmap) msg.obj;
MyImageView.this.setImageBitmap(bitmap);
};
};
public void setImageUrl(final String url_str, final Map<String, String> context_args){
new Thread(new Runnable() {
@Override
public void run() {
//获取URL对应的图片资源 bitmap
try {
URL url = new URL(url_str);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(10000);
//将Session保存在Activity传入的Map中.
boolean isHasCookie = context_args.containsKey("Cookie");
String req_cookie = connection.getHeaderField("Set-Cookie");
if(isHasCookie){
String cookie = context_args.get("Cookie");