zoukankan      html  css  js  c++  java
  • day 20

    HttpUtil工具的学习和练习

    简单的okhttp使用

    private  void requestImages(){
    
            String url ="http://112.124.22.238:8081/course_api/banner/query?type=1";
    
    
          OkHttpClient client = new OkHttpClient();
    
            RequestBody body = new FormEncodingBuilder()
                    .add("type","1")
         .build();
    
    
            Request request = new Request.Builder()
                   .url(url)
                    .post(body)
                    .build();
    
    
    
               client.newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(Request request, IOException e) {
    
    
                    }
    
                   @Override
                    public void onResponse(Response response) throws IOException {
    
                       if(response.isSuccessful()){
    
                           String json =  response.body().string();
    
                            Type type = new TypeToken<List<Banner>>(){}.getType();
                           mBanner = mGson.fromJson(json,type);
    
                            initSlider();
    
    
                        }
                    }
                });
    
    
            httpHelper.get(url, new SpotsCallBack<List<Banner>>(getContext()){
    
    
                @Override
                public void onSuccess(Response response, List<Banner> banners) {
    
                    mBanner = banners;
                    initSlider();
                }
    
                @Override
                public void onError(Response response, int code, Exception e) {
    
                }
            });
    
    
    
        }

    简单封装okhttp

    public class OkHttpHelper {
    
    
    
    
    
    
            public static final String TAG="OkHttpHelper";
    
            private  static  OkHttpHelper mInstance;
            private OkHttpClient mHttpClient;
            private Gson mGson;
    
            private Handler mHandler;
    
    
    
            static {
                mInstance = new OkHttpHelper();
            }
    
            private OkHttpHelper(){
    
                mHttpClient = new OkHttpClient();
                mHttpClient.setConnectTimeout(10, TimeUnit.SECONDS);
                mHttpClient.setReadTimeout(10,TimeUnit.SECONDS);
                mHttpClient.setWriteTimeout(30,TimeUnit.SECONDS);
    
                mGson = new Gson();
    
                mHandler = new Handler(Looper.getMainLooper());
    
            };
    
            public static  OkHttpHelper getInstance(){
                return  mInstance;
            }
    
    
    
    
            public void get(String url,BaseCallback callback){
    
    
                Request request = buildGetRequest(url);
    
                request(request,callback);
    
            }
    
    
            public void post(String url,Map<String,String> param, BaseCallback callback){
    
                Request request = buildPostRequest(url,param);
                request(request,callback);
            }
    
    
    
    
    
            public  void request(final Request request,final  BaseCallback callback){
    
                callback.onBeforeRequest(request);
    
                mHttpClient.newCall(request).enqueue(new Callback() {
    
                    @Override
                    public void onFailure(Request request, IOException e) {
                        callback.onFailure(request,e);
    
                    }
    
                    @Override
                    public void onResponse(Response response) throws IOException {
    
                        callback.onResponse(response);
    
                        if(response.isSuccessful()) {
    
                            String resultStr = response.body().string();
    
                            Log.d(TAG, "result=" + resultStr);
    
                            if (callback.mType == String.class){
                                callbackSuccess(callback,response,resultStr);
                            }
                            else {
                                try {
    
                                    Object obj = mGson.fromJson(resultStr, callback.mType);
                                    callbackSuccess(callback,response,obj);
                                }
                                catch (com.google.gson.JsonParseException e){ // Json解析的错误
                                    callback.onError(response,response.code(),e);
                                }
                            }
                        }
                        else {
                            callbackError(callback,response,null);
                        }
    
                    }
                });
    
    
            }
    
    
            private void callbackSuccess(final  BaseCallback callback , final Response response, final Object obj ){
    
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onSuccess(response, obj);
                    }
                });
            }
    
    
            private void callbackError(final  BaseCallback callback , final Response response, final Exception e ){
    
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onError(response,response.code(),e);
                    }
                });
            }
    
    
    
            private  Request buildPostRequest(String url,Map<String,String> params){
    
                return  buildRequest(url,HttpMethodType.POST,params);
            }
    
            private  Request buildGetRequest(String url){
    
                return  buildRequest(url,HttpMethodType.GET,null);
            }
    
            private  Request buildRequest(String url,HttpMethodType methodType,Map<String,String> params){
    
    
                Request.Builder builder = new Request.Builder()
                        .url(url);
    
                if (methodType == HttpMethodType.POST){
                    RequestBody body = builderFormData(params);
                    builder.post(body);
                }
                else if(methodType == HttpMethodType.GET){
                    builder.get();
                }
    
    
                return builder.build();
            }
    
    
    
            private RequestBody builderFormData(Map<String,String> params){
    
    
                FormEncodingBuilder builder = new FormEncodingBuilder();
    
                if(params !=null){
    
                    for (Map.Entry<String,String> entry :params.entrySet() ){
    
                        builder.add(entry.getKey(),entry.getValue());
                    }
                }
    
                return  builder.build();
    
            }
    
    
    
            enum  HttpMethodType{
    
                GET,
                POST,
    
            }
    
    
    
    }
  • 相关阅读:
    Django的models介绍
    Django的模板继承
    Django的模板语言介绍
    django的视图函数介绍
    django的流程分析
    1、数据库优化
    git 开发中的总结
    ob
    docker-compose
    如何批量删除Docker中已经停止的容器
  • 原文地址:https://www.cnblogs.com/chenaiiu/p/13551307.html
Copyright © 2011-2022 走看看