第一步 ,添加依赖到 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();
}
});