zoukankan      html  css  js  c++  java
  • Android Http 框架 LiteHTTP

    liteHttp初始化:

    public class LiteHttpManager {//
        protected static LiteHttp liteHttp;
    
        public static LiteHttp getInstance() {
            if (liteHttp == null) {
                initLiteHttp(App.mContext);
            }
            return liteHttp;
        }
    
        private static void initLiteHttp(Context context) {
            HttpConfig config = new HttpConfig(context) // configuration quickly
                    .setDebugged(true)// log output when debugged
                    .setDetectNetwork(true)              // detect network before connect
                    .setDoStatistics(true)
                    .setDefaultMaxRetryTimes(3)
                    .setDefaultCharSet("UTF-8")
                    .setDebugged(Utils.isDebug())
                    .setForRetry(3, false) // statistics of time and traffic
                    //.setDisableNetworkFlags(HttpConfig.FLAG_NET_DISABLE_MOBILE) //不用2/3/4G网络
                    .setUserAgent("Mozilla/5.0 (...)")   // set custom User-Agent
                    .setTimeOut(8000, 50000);             // connect and socket timeout: 2s
            liteHttp = LiteHttp.newApacheHttpClient(config);
        }
    
    
    }
    

      

    liteHttp 请求网络:

    public void requestInspectionPoolData(String time, String inspectiontype) {
            StringRequest postRequest = new StringRequest("url");
    
            LinkedList<NameValuePair> pList = new LinkedList<NameValuePair>();
            pList.add(new NameValuePair("User", "");
            pList.add(new NameValuePair("possword", "");
            postRequest.setHttpBody(new UrlEncodedFormBody(pList));
            postRequest.setMethod(HttpMethods.Post);
            postRequest.setHttpListener(new HttpListener<String>() {
                @Override
                public void onSuccess(String s, Response<String> response) {
                    super.onSuccess(s, response);
                    Log.i(TAG, "onSuccess: " + s);
                    //解析服务器返回数据
                }
    
                @Override
                public void onFailure(HttpException e, Response<String> response) {
                    super.onFailure(e, response);
                    //网络请求失败
                }
            });
         //异步访问 LiteHttpManager.getInstance().executeAsync(postRequest); }

      

    liteHttp 封装 HTTPBody:

      ApiParameter:

    /**
     * Created by Alen on 2017/2/11.
     * <p>
     * 请求接口的父类
     */
    public class ApiParameter {
    
        // 子类 如果要添加参数需要重写该方法, 否则默认为无 额外参数
        //
        public ApiParamMap buildExterParameter() {
            return new ApiParamMap();
        }
    
        // 子类, 如果需要添加sessionKey 需要覆盖此函数并且返回true
        public boolean needSessionKey() {
            return false;
        }
    
        public MultipartBody getRequestBody() {
            ApiParamMap apiParamMap = buildExterParameter();
            apiParamMap.put("os", new ApiParamMap.ParamData("android"));
            apiParamMap.put("appVersion", new ApiParamMap.ParamData(Utils.getVersion()));
            apiParamMap.put("versionCode", new ApiParamMap.ParamData(Utils.getVersionCode() + ""));
            apiParamMap.put("channel", new ApiParamMap.ParamData(Utils.getChannelName()));
            apiParamMap.put("osVersion", new ApiParamMap.ParamData(android.os.Build.VERSION.SDK_INT + ""));
    
            MultipartBody body = new MultipartBody();
            List<String> lists = new ArrayList<String>(apiParamMap.keySet());
            for (String key : lists) {
                if(apiParamMap.get(key).value == null) apiParamMap.get(key).value = "";//防止外面过来空对象  导致崩溃
                body.addPart(new StringPart(key, apiParamMap.get(key).value));
            }
            return body;
        }
    }
    

      

    ApiParamMap:

    public class ApiParamMap extends LinkedHashMap<String, ApiParamMap.ParamData> {
        public ApiParamMap() {
            super();
        }
    
        public static class ParamData {
            public String value;
    
            public ParamData(String value) {
                this.value = value;
            }
        }
    }
    

      

    ApiParameter 子类:

    public class ActionParmeter extends ApiParameter {
    
        private String user;
        private String password;

    //方法参数为调用URL需要的参数 public ActionParmeter(String user, String password) { this.user= user; this.password= password; }
      //重写父类方法 @Override public ApiParamMap buildExterParameter() { ApiParamMap map=new ApiParamMap(); map.put("user", new ApiParamMap.ParamData(this.user)); map.put("password", new ApiParamMap.ParamData(this.password)); return map; } }

      

    调用:

    stringRequest.setHttpBody(new ActionDetailsParmeter(user,password).getRequestBody());
    

     

    
    
  • 相关阅读:
    多线程008如何预防死锁
    多线程003volatile的可见性和禁止指令重排序怎么实现的
    多线程011线程池运行原理及复用原理
    多线程010为什么要使用线程池
    多线程009什么是守护线程
    多线程005创建线程有哪些方式
    多线程007描述一下线程安全活跃态问题,以及竞态条件
    多线程002ThreadLocal有哪些内存泄露问题,如何避免
    关于Tomcat的启动时机(精通Eclipse Web开发P40)
    乱侃~~~
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9565946.html
Copyright © 2011-2022 走看看