OkHtt3封装 package com.app.test.apkupdateproject.net;import java.io.IOException;import java.net.SocketTimeoutException;import java.util.Map;import java.util.concurrent.TimeUnit;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Fo
package com.app.test.apkupdateproject.net; import java.io.IOException; import java.net.SocketTimeoutException; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** * Created by ${liumengqiang} on 2017/9/12. */ public class OkhttpManager { private static OkhttpManager okhttpManager; private static OkHttpClient okHttpClient; private OkhttpManager(){ } public static OkhttpManager getInstance(){ if(okhttpManager == null){ okhttpManager = new OkhttpManager(); okHttpClient = new OkHttpClient().newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS) .writeTimeout(5000,TimeUnit.MILLISECONDS) .connectTimeout(5000,TimeUnit.MILLISECONDS) .build(); } return okhttpManager; } public void doPost(Mapmap, String url, final OKHttpCallBack okHttpCallBack){ RequestBody requestBody = getRequestBody(map); Request request = new Request.Builder().post(requestBody).url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { if(e instanceof SocketTimeoutException){ okHttpCallBack.onFail(0, "time connect out!"); }else{ okHttpCallBack.onFail(1,e.getMessage() == null ? "net error" : e.getMessage()); } } @Override public void onResponse(Call call, Response response) throws IOException { if(response.code() == 200){ String string = response.body().string(); /** * TODO 解析 */ okHttpCallBack.onSucess(string); }else{ okHttpCallBack.onFail(response.code(), parseCode(response.code())); } } }); } public void doGet(String url, final OKHttpCallBack okHttpCallBack){ Request request = new Request.Builder().get().url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { if(e instanceof SocketTimeoutException){ okHttpCallBack.onFail(0,"time connect out!"); }else{ okHttpCallBack.onFail(1,e.getMessage() == null ? "net error!" : e.getMessage()); } } @Override public void onResponse(Call call, Response response) throws IOException { if(response.code() == 200){ String string = response.body().string(); /** * TODO 解析 */ okHttpCallBack.onSucess(string); }else{ okHttpCallBack.onFail(response.code(), parseCode(response.code())); } } }); } public interface OKHttpCallBack{ void onSucess(String infoString); void onFail(int code, String error); } /** * 与服务器统一 * @param code * @return */ private String parseCode(int code) { if (code < 200 || code > 599) { return "未知异常"; } else if (code > 399 && code < 600) { return "连接服务器异常"; } else { return "服务器响应异常"; } } /** * */ private RequestBody getRequestBody(Map map){ /** * timestamp=2013-10-11 14:00:000&customeCode=bsj123456&method=category.list.query &bizSource=123456&sign=f60579d881fd9f0a698303329ae4a97b&requestBizData={具体业务请求数据,格式为json字符串,并且进行了url编码,详细见各接口说明} */ FormBody.Builder builder = new FormBody.Builder(); for(Map.Entry entry: map.entrySet()){ builder.add(entry.getKey(), entry.getValue()); } return builder.build(); } }