OKGO 网路请求框架的简单使用

第一步 ,添加依赖到 build.gradle,如下

	compile 'com.lzy.net:okgo:3.0.4'
    //可以单独使用,不需要依赖下方的扩展包
    compile 'com.lzy.net:okrx:0.1.0'

第二步,在 BaseApplication 中注册

	//---------这里给出的是示例代码,告诉你可以这么传,实际使用的时候,根据需要传,不需要就不传-------------//
        HttpHeaders headers = new HttpHeaders();
        headers.put("commonHeaderKey1", "commonHeaderValue1");    //header不支持中文,不允许有特殊字符
        headers.put("commonHeaderKey2", "commonHeaderValue2");
        HttpParams params = new HttpParams();
        params.put("commonParamsKey1", "commonParamsValue1");     //param支持中文,直接传,不要自己编码
        params.put("commonParamsKey2", "这里支持中文参数");
        //----------------------------------------------------------------------------------------//

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        //log相关
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo");
        loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);        //log打印级别,决定了log显示的详细程度
        loggingInterceptor.setColorLevel(Level.INFO);                               //log颜色级别,决定了log在控制台显示的颜色
        builder.addInterceptor(loggingInterceptor);                                 //添加OkGo默认debug日志

        //超时时间设置,默认60秒
        builder.readTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);      //全局的读取超时时间
        builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);     //全局的写入超时时间
        builder.connectTimeout(20000, TimeUnit.MILLISECONDS);   //全局的连接超时时间

        //自动管理cookie(或者叫session的保持),以下几种任选其一就行
        //builder.cookieJar(new CookieJarImpl(new SPCookieStore(this)));            //使用sp保持cookie,如果cookie不过期,则一直有效
        builder.cookieJar(new CookieJarImpl(new DBCookieStore(this)));              //使用数据库保持cookie,如果cookie不过期,则一直有效
        //builder.cookieJar(new CookieJarImpl(new MemoryCookieStore()));            //使用内存保持cookie,app退出后,cookie消失

        //https相关设置,以下几种方案根据需要自己设置
        //方法一:信任所有证书,不安全有风险
        HttpsUtils.SSLParams sslParams1 = HttpsUtils.getSslSocketFactory();


        // 其他统一的配置
        // 详细说明看GitHub文档:https://github.com/jeasonlzy/
        OkGo.getInstance()
                .init(this)                           //必须调用初始化
                .setOkHttpClient(builder.build())               //建议设置OkHttpClient,不设置会使用默认的
                .setCacheMode(CacheMode.NO_CACHE)               //全局统一缓存模式,默认不使用缓存,可以不传
                .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)   //全局统一缓存时间,默认永不过期,可以不传
                .setRetryCount(0)                               //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0
                .addCommonHeaders(headers)                      //全局公共头
                .addCommonParams(params);                       //全局公共参数

上传图片

	//拼地址
        String tomotoor = AccountManager.getLoginBean().getTomotoor();
        String url = tomotoor + HttpUrl.PIC_UOLOAD;
        //弄数据集合
        ArrayList<File> arrayList = new ArrayList<>();
        for (int i = 0; i < bitmaps.size(); i++) {
            File fi = new FileUtils().compressImage(bitmaps.get(i));
            Log.e(TAG, fi.getPath());
            arrayList.add(fi);
        }
        
        HttpParams param = new HttpParams();
        param.put("formId", fPkMaintaindetailid);
        OkGo.<String>post(url)
                .tag(BaseApplication.getInstence())
                .params(param)
                .addFileParams("file", arrayList)
                .isMultipart(true)
                .execute(new StringCallback() {

                    @Override
                    public void onSuccess(com.lzy.okgo.model.Response<String> response) {
                        Log.e(TAG, "上传成功" + response.body());
                        progressbar.setVisibility(View.GONE);
                        EventBus.getDefault().post(new XjEventBus(""));
                        finish();
                    }

                    @Override
                    public void onError(com.lzy.okgo.model.Response<String> response) {
                        super.onError(response);
                        Log.e(TAG, "上传失败" + response.body());
                    }
                });

普通请求

	 String tomotoor = AccountManager.getLoginBean().getTomotoor();
                    String url = tomotoor + HttpUrl.CHECK_QRCODE;
                    OkGo.<String>get(url)
                            .tag(BaseApplication.getInstence())
                            .params("app", repairTwoCodeBean.getApp())
                            .params("type", repairTwoCodeBean.getType())
                            .params("code", repairTwoCodeBean.getCode())
                            .params("locationCode", locationCode)
                            .params("deviceCode", "")
                            .params("longitude", strGps[0])
                            .params("latitude", strGps[1])
                            .execute(new StringCallback() {
                                @Override
                                public void onSuccess(com.lzy.okgo.model.Response<String> response) {
                                    String s = response.body();
                                    Gson gson1 = new Gson();
                                }

                                @Override
                                public void onError(com.lzy.okgo.model.Response<String> response) {
                                    super.onError(response);
                                    Toast.makeText(getSelfActivity(), "请求失败,请稍后重试", Toast.LENGTH_LONG).show();
                                }
                            });

你可能感兴趣的:(OKGO 网路请求框架的简单使用)