android:安卓中5种网络请求库之Vellory OkHttp Retrofit

文章来自:http://blog.csdn.net/intbird
github:https://github.com/intbird/ANDIntbirdNetWork

0,HttpConnection,HttpClient,AysncHttp;

之前的日志:http://blog.csdn.net/intbird/article/details/38338623

1,Vellory:

    ------------------------
        initVolleyObj();
        initVolleyString();
        initVolleyImage();
        initVolleyImages();
        initVolleyNetWorkImage();
        initVolleyGson();
    ------------------------

    private void initVolleyObj(){
        RequestQueue queue = Volley.newRequestQueue(this);

        // 如果不指定method,则 jsonObj参数为null时为GET,不为null时为POST;
        // new JsonObjectRequest(ApiConstans.API_URL, getJsonObjParams(),..);
        //如果method为GET ,则 jsonObj参数为null;
        JsonObjectRequest objectRequest = new JsonObjectRequest(Request.Method.GET, ApiConstans.API_URL, getJsonObjParams(), new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                setJsonObjResponse(jsonObject.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                setJsonObjResponse(volleyError.toString());
            }
        });
        queue.add(objectRequest);
        queue.start();
    }

    private JSONObject getJsonObjParams(){
        JSONObject jsonObject = new JSONObject();
        try{
            jsonObject.put("_id", "testinfo");
            jsonObject.put("person", "foo");
            jsonObject.put("phone", "bar");
        }catch (Exception ex){

        }
        return jsonObject;
    }

    private void setJsonObjResponse(String message){
        TextView textView = (TextView) findViewById(R.id.tv_hello);
        textView.setText(message);
    }

    private void initVolleyString(){
        RequestQueue queue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(ApiConstans.API_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                setJsonObjResponse(s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                setJsonObjResponse(volleyError.toString());
            }
        });
        queue.add(stringRequest);
        queue.start();
    }

    private void initVolleyImage(){
        final ImageView imageView = (ImageView)findViewById(R.id.iv_hello);

        RequestQueue queue = Volley.newRequestQueue(this);
        ImageRequest imageRequest = new ImageRequest(ApiConstans.API_URL_IMG, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                imageView.setImageBitmap(bitmap);
            }
        }, imageView.getWidth(),
                imageView.getHeight(),
                ImageView.ScaleType.CENTER_CROP,
                Bitmap.Config.ARGB_8888,
                new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                setJsonObjResponse(volleyError.toString());
            }
        });
        queue.add(imageRequest);
        queue.start();
    }

    private void initVolleyImages(){
        final ImageView imageView = (ImageView)findViewById(R.id.iv_hello);

        RequestQueue queue = Volley.newRequestQueue(this);

        final LruCache<String,Bitmap> mImageCache = new LruCache<>(20);
        ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String s) {
                return mImageCache.get(s);
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                mImageCache.put(s,bitmap);
            }
        };

        ImageLoader mImageLoder = new ImageLoader(queue,imageCache);
        ImageLoader.ImageListener imageListener =ImageLoader.getImageListener(imageView,
                R.drawable.notification_template_icon_bg,
                R.drawable.abc_ic_ab_back_mtrl_am_alpha);

        mImageLoder.get(ApiConstans.API_URL_IMG, imageListener);
    }

    private void initVolleyNetWorkImage(){
        final NetworkImageView imageView = (NetworkImageView)findViewById(R.id.iv_network_hello);

        RequestQueue queue = Volley.newRequestQueue(this);

        final LruCache<String,Bitmap> mImageCache = new LruCache<>(20);
        ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String s) {
                return mImageCache.get(s);
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                mImageCache.put(s,bitmap);
            }
        };

        ImageLoader mImageLoder = new ImageLoader(queue,imageCache);
        //ImageLoader.ImageListener imageListener =ImageLoader.getImageListener(imageView,
        //        R.drawable.notification_template_icon_bg,
        //        R.drawable.abc_ic_ab_back_mtrl_am_alpha);

        //mImageLoder.get(ApiConstans.API_URL_IMG, imageListener);
        imageView.setImageUrl(ApiConstans.API_URL_IMG, mImageLoder);
    }

    private void initVolleyGson(){
        RequestQueue queue = Volley.newRequestQueue(this);

        VolleyGsonRequest gsonRequest =  new VolleyGsonRequest(ApiConstans.API_URL, PersonResponse.class, null, new Response.Listener<PersonResponse>() {

            @Override
            public void onResponse(PersonResponse response) {
                setJsonObjResponse(response.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                setJsonObjResponse(volleyError.toString());
            }
        });
        queue.add(gsonRequest);
        queue.start();
    }

2 ,OkHttp

----------------
okHttpGET();
okHttpGETAsyc();
okHttpPost();
okHttpPostFile();
----------------
private String okHttpGET() {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url(ApiConstans.API_URL)
                .build();
        try {
            Response response = client.newCall(request).execute();
            Reader reder = response.body().charStream();
            return response.body().string();
        } catch (Exception ex) {
            Log.e("intbird", ex.toString());
        }

        return null;
    }

    private void okHttpGETAsyc(){
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(ApiConstans.API_URL)
                .build();
        client.newCall(request)
                .enqueue(new Callback() {
                    @Override
                    public void onFailure(Request request, IOException e) {
                        textView.setText(e.toString());
                    }

                    @Override
                    public void onResponse(Response response) throws IOException {
                        textView.setText(response.body().toString());
                    }
                });
    }

    private String okHttpPost() {
        OkHttpClient okHttpClient = new OkHttpClient();

        RequestBody requestBody = new FormEncodingBuilder()
                .add("plat", "android")
                .add("from", "client")
                .build();

//        RequestBody requestBody = new MultipartBuilder()
//                .type(MultipartBuilder.FORM)
//                .addFormDataPart("title","title")
//                .addFormDataPart("image","filename",RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"),new File("")))
//                .build();

        Request request = new Request.Builder()
                .url(ApiConstans.API_URL)
                .post(requestBody)
                .build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return response.body().string();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    private void okHttpPostFile(){
        MediaType MEDIA_TYPE = MediaType.parse("text/x-markdown; charset=utf-8");
        File file = new File("");

        OkHttpClient okHttpClient = new OkHttpClient();

        Request request = new Request.Builder()
                .url(ApiConstans.API_URL)
                .post(RequestBody.create(MEDIA_TYPE,file))
                .build();
        try {
            Response respose = okHttpClient.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3,Retrofit

 Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ApiConstans.HOST)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        RetrofitService service = retrofit.create(RetrofitService.class);
        Call<RetrofitMode> data = service.getModeData("p");//p in the path means php
        data.enqueue(new Callback<RetrofitMode>() {
            @Override
            public void onResponse(Response<RetrofitMode> response) {
                textView.setText(response.toString() + "\r\n" + response.body().toString());
            }

            @Override
            public void onFailure(Throwable t) {
                textView.setText(t.getMessage().toString());
            }
        });

public interface RetrofitService {

    @GET("/{p}/index.php")
    Call<RetrofitMode> getModeData(@Path("p")String pOrjType);
}

猜你喜欢

转载自blog.csdn.net/intbird/article/details/49078379