標籤:ati iss user col 1.2 build square failure static
1.封裝了get方法,handler更新主線程,回調的onsuccess,onfailure,onerror等方法
2.設定檔
api ‘com.android.support:recyclerview-v7:26.1.0‘api ‘com.squareup.okhttp3:okhttp:3.9.1‘//fastjsonapi ‘com.alibaba:fastjson:1.2.44‘
3.先建立一個http包,建BaseHttpCallback和OkHttpHelper這2個類,以後會加loading...這個東西
public class OkHttpHelper { private static OkHttpClient okHttpClient; private android.os.Handler handler; private OkHttpHelper(){ okHttpClient =new OkHttpClient(); handler =new android.os.Handler(Looper.getMainLooper()); }; public static OkHttpHelper getInstance(){ return new OkHttpHelper(); } public void get(String url,BaseHttpCallback baseHttpCallback){ Request request = buildRequest(url,null,HttpMethodType.GET); doRequest(request, baseHttpCallback); } public void post(String url, Map<String,String>params,BaseHttpCallback baseHttpCallback){ Request request = buildRequest(url,null,HttpMethodType.POST); doRequest(request, baseHttpCallback); } public void doRequest(final Request request, final BaseHttpCallback baseHttpCallback){ baseHttpCallback.onRequestBefore(request); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { callbackFailure(baseHttpCallback,e); } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ String s= response.body().string(); callbackSuccess(baseHttpCallback,response,s); }else{ callbackError(baseHttpCallback,response,response.code()); } } }); } private Request buildRequest(String url,Map<String,String> params,HttpMethodType methodType){ Request.Builder builder = new Request.Builder(); builder.url(url); if(methodType==HttpMethodType.GET){ builder.get(); }else if(methodType==HttpMethodType.POST){ } return builder.build(); } enum HttpMethodType{ GET, POST } private void callbackSuccess(final BaseHttpCallback callback, final Response response, final String s){ handler.post(new Runnable() { @Override public void run() { callback.onSuccess(response,s); } }); } private void callbackError(final BaseHttpCallback callback, final Response response, final int code){ handler.post(new Runnable() { @Override public void run() { callback.onError(response,code,null); } }); } private void callbackFailure(final BaseHttpCallback callback, final Exception e){ handler.post(new Runnable() { @Override public void run() { callback.onFailure(e); } }); }}
public abstract class BaseHttpCallback { public abstract void onRequestBefore(Request request); public abstract void onSuccess(Response response,String string); public abstract void onError(Response response,int code,Exception e); public abstract void onFailure(Exception e);}
4. 還另外封裝了個User類
public class User { public String result; public List<Data> data; public class Data{ public String name; public String age; public String getName() { return name; } public String getAge() { return age; } } public String getResult() { return result; } public List<Data> getDatas() { return data; }}
5.activity中調用例子
OkHttpHelper httpHelper =OkHttpHelper.getInstance(); String url = "http://www.baidu.com"; httpHelper.get(url,new BaseHttpCallback(){ @Override public void onRequestBefore(Request request) { } @Override public void onSuccess(Response response, String string) { } @Override public void onError(Response response, int code, Exception e) { } @Override public void onFailure(Exception e) { Toast.makeText(MainActivity.this,"當前網路不可用,請檢查網路",Toast.LENGTH_LONG).show(); } });
6.未完善的,沒有post,沒有loading效果,
封裝安卓的okhttp