在Android中实现Digets密码认证(在安卓中用Authenticator不起作用)

本文介绍了一个使用Android进行网络图片加载并显示到ImageView中的示例。通过HttpClient发起GET请求,利用UsernamePasswordCredentials进行身份验证,并将获取到的图片数据转换为Bitmap显示在界面上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.itant.testwhite;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HeaderElement;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private ImageView iv_white;
    boolean mStopStream = true;

    Handler mHandler = new Handler(new Handler.Callback() {

        @Override
        public boolean handleMessage(Message msg) {
            // TODO Auto-generated method stub
            Bitmap bitmap = (Bitmap) msg.obj;
            iv_white.setImageBitmap(bitmap);
            return true;
        }
    });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv_white = (ImageView) findViewById(R.id.iv_white);

        new Thread(new Runnable() {

            @Override
            public void run() {
                try {

                    String urlStr = "http://192.168.1.127:81/tmpfs/auto.jpg?1433329819419";
                    String host = "192.168.1.127";
                    String realm = "";
                    String userName = "admin";
                    String password = "123456";
                    //

                    HttpClient client = new HttpClient();

                    GetMethod getMethod = new GetMethod(urlStr);

                    int status = client.executeMethod(getMethod);
                    String responseBody = getMethod.getResponseBodyAsString();

                    Header wwAuthHeader = getMethod
                            .getResponseHeader("WWW-Authenticate");
                    for (HeaderElement element : wwAuthHeader.getElements()) {
                        System.out.println(element.getName() + ":"
                                + element.getValue());
                    }

                    UsernamePasswordCredentials upc = new UsernamePasswordCredentials(
                            userName, password);
                    AuthScope as = new AuthScope(host, 81, realm);
                    client.getState().setCredentials(as, upc);
                    status = client.executeMethod(getMethod);
                    responseBody = getMethod.getResponseBodyAsString();
                    // getMethod.releaseConnection();

                    Bitmap bitmap = BitmapFactory.decodeByteArray(
                            getMethod.getResponseBody(), 0,
                            getMethod.getResponseBody().length);
                    Message message = Message.obtain();
                    message.obj = bitmap;
                    mHandler.sendMessage(message);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值