volley 實現驗證碼功能

    公司的項目,爲防止機器註冊,需增長驗證碼功能,開始覺得只是一張圖片,經過glide加載個地址就好,但接口的同事說驗證碼接口是返回一個流,由於服務端不該該作驗證碼圖片的存儲,由於驗證是不停變更的,但公司的接口都是https,有相應的證書校驗環節及頭部信息校驗,而項目中現存的網絡請求是封裝的volley json請求,只應該返回json的接口,以前瞭解的也是volley有jsonRequest,StringReque.json

     開始打算本身在封裝一套網絡請求用於驗證碼接口,一個偶然的想法,volley是否提供有相應的api呢?經過調研發現 volley有 提供ImageRequest ,實現方法以下:api

    

MyImageRequest imageRequest = new MyImageRequest(
                NetworkHelper.processUrl(NetConfig.imgVerificationCode),
                new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap response) {
                        try {
                            isGettingImageCode = false;

                            img_verificationCode_btn.setImageBitmap(response);
                            img_verificationCode_btn.setVisibility(View.VISIBLE);
                            tv_get_imgCode_error.setVisibility(View.GONE);
                            pb_loading_imgcode.setVisibility(View.GONE);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                isGettingImageCode = false;
                img_verificationCode_btn.setVisibility(View.GONE);
                tv_get_imgCode_error.setVisibility(View.VISIBLE);
                pb_loading_imgcode.setVisibility(View.GONE);
                tv_get_imgCode_error.setText("點擊重試");
//                ToastUtil.show("網絡異常,圖片驗證碼獲取失敗");
            }

        });
        MyApplication.getInstance().getRequestQueuequeue().add(imageRequest);

 

 

public class MyImageRequest extends ImageRequest {
    public MyImageRequest(String url, Response.Listener<Bitmap> listener, int maxWidth, int maxHeight, ImageView.ScaleType scaleType, Bitmap.Config decodeConfig, Response.ErrorListener errorListener) {
        super(url, listener, maxWidth, maxHeight, scaleType, decodeConfig, errorListener);
    }

    public MyImageRequest(String url, Response.Listener<Bitmap> listener, int maxWidth, int maxHeight, Bitmap.Config decodeConfig, Response.ErrorListener errorListener) {
        super(url, listener, maxWidth, maxHeight, decodeConfig, errorListener);

    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        return initHeader(urlBuilder(getUrl(),null),null,"GET");  //封裝head信息

    }

相關的證書校驗  在以前的文章中提到 重寫網絡

HTTPSTrustManager中的
checkServerTrusted
相關文章
相關標籤/搜索