1.导入依赖
2.设置网络请求
3.在App中初始化
第一步:implementation 'com.squareup.okhttp3:okhttp:3.3.0'
第二步:
public class UrlTool { private static Gson gson = new Gson(); private static final String MEDIA_TYPE = "application/json;charset=utf-8"; private static final String METHOD_GET = "GET"; private static final String METHOD_POST = "POST"; private static final String METHOD_PUT = "PUT"; private static final String METHOD_DELETE = "DELETE"; private static OkHttpClient okHttpClient = new OkHttpClient(); //私有化构造方法,利用单例模式 private UrlTool() { } ; //写一个init方法,用于初始化的时候的调用 public static void init() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.readTimeout(3000, TimeUnit.MILLISECONDS); builder.writeTimeout(3000, TimeUnit.MILLISECONDS); builder.connectTimeout(3000, TimeUnit.MILLISECONDS); okHttpClient = builder.build(); } //创建request对象 private static Request createRequest(String url, String method, BaseRequset baseRequset) { RequestBody requestBody = null; if (baseRequset != null) { String bodyJson = gson.toJson(baseRequset); MediaType JSON = MediaType.parse(MEDIA_TYPE); requestBody = RequestBody.create(JSON, bodyJson); } Request.Builder builder = new Request.Builder().url(url); Request request = null; switch (method) { /* case METHOD_GET: request = builder.build(); break;*/ case METHOD_POST: request = builder.post(requestBody).build(); break; /* case METHOD_PUT: if (requestBody != null) { request = builder.put(requestBody).build(); } break; case METHOD_DELETE: if (requestBody != null) { request = builder.delete(requestBody).build(); } else { request = builder.delete().build(); } break;*/ } return request; } //封装异步的post方法 public static void enqueuePost(String url, BaseRequset baseRequset, Callback callback) { Request request = createRequest(url, METHOD_POST, baseRequset); Call call = okHttpClient.newCall(request); call.enqueue(callback); } //封装异步的get /* public static void enqueueGet(String url, Callback callback) { Request request = createRequest(url, METHOD_GET); Call call = okHttpClient.newCall(request); call.enqueue(callback); }*/ }
第三步:
UrlTool.init();
Model
//获取响应码 int code = response.code(); if (code == 200) { //获取服务器返回的json数据 ResponseBody body = response.body(); final String s = body.string(); handler.post(new Runnable() { @Override public void run() { data.getUrl(s); } }); }