RequestDataResult dataResult = JSON.parseObject(response.toString(), RequestDataResult.class);
OKHttp封装
package com.pumin.lsy.http; import android.os.Handler; import android.os.Looper; import com.squareup.okhttp.Callback; import com.squareup.okhttp.FormEncodingBuilder; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.Response; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.CookieManager; import java.net.CookiePolicy; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; /** * Created by yh on 16/5/10. */ public class OkHttpUtils { private static OkHttpUtils okHttpUtils; private OkHttpClient mOkHttpClient; private Handler mDelivery; private OkHttpUtils() { mOkHttpClient = new OkHttpClient(); mOkHttpClient.setConnectTimeout(10, TimeUnit.SECONDS); mOkHttpClient.setReadTimeout(10, TimeUnit.SECONDS); mOkHttpClient.setWriteTimeout(10, TimeUnit.SECONDS); //使用服务器的cookie mOkHttpClient.setCookieHandler(new CookieManager(null, CookiePolicy.ACCEPT_ORIGINAL_SERVER)); //获取主线程的handler mDelivery = new Handler(Looper.getMainLooper()); } private static synchronized OkHttpUtils getmInstance() { if (okHttpUtils == null) { okHttpUtils = new OkHttpUtils(); } return okHttpUtils; } private void getRequest(String url, final ResultCallback callback) { final Request request = new Request.Builder().url(url).build(); deliveryResult(callback, request); } private void postRequest(String url, final ResultCallback callback, List<Param> params) { Request request = buildPostRequest(url, params); deliveryResult(callback, request); } private <T> void download(String url, final ResultCallback callback) { Request request = buildPostRequest(url); downloadFile(request); } private <T> void postRequest(String url, final ResultCallback callback, Map<String, T> params) { Request request = buildPostRequest(url, params); deliveryResult(callback, request); } private void deliveryResult(final ResultCallback callback, Request request) { mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, final IOException e) { sendFailCallback(callback, e); } @Override public void onResponse(Response response) throws IOException { try { String str = response.body().string(); // if (callback.mType == String.class) { sendSuccessCallBack(callback, str); // } else { // Object object =str;// JsonUtils.deserialize(str, callback.mType); // sendSuccessCallBack(callback, object); // } } catch (final Exception e) { sendFailCallback(callback, e); } } }); } public void downloadFile(Request request) { mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { InputStream is = response.body().byteStream(); OutputStream os = new FileOutputStream(new File("sdcard/text")); int i = 0; byte[] buffer = new byte[1024]; while ((i = is.read(buffer)) != -1) { os.write(buffer, 0, i); } is.close(); os.close(); } }); } private void sendFailCallback(final ResultCallback callback, final Exception e) { mDelivery.post(new Runnable() { @Override public void run() { if (callback != null) { callback.onFailure(e); } } }); } private void sendSuccessCallBack(final ResultCallback callback, final Object obj) { mDelivery.post(new Runnable() { @Override public void run() { if (callback != null) { callback.onSuccess(obj); } } }); } private Request buildPostRequest(String url, List<Param> params) { FormEncodingBuilder builder = new FormEncodingBuilder(); for (Param param : params) { builder.add(param.key, param.value); } RequestBody requestBody = builder.build(); return new Request.Builder().url(url).post(requestBody).build(); } private <T> Request buildPostRequest(String url, Map<String, T> params) { FormEncodingBuilder builder = new FormEncodingBuilder(); for (String key : params.keySet()) { builder.add(key, String.valueOf(params.get(key))); } RequestBody requestBody = builder.build(); return new Request.Builder().url(url).post(requestBody).build(); } private <T> Request buildPostRequest(String url) { FormEncodingBuilder builder = new FormEncodingBuilder(); RequestBody requestBody = builder.build(); return new Request.Builder().url(url).post(requestBody).build(); } /**********************对外接口************************/ /** * get请求 * * @param url 请求url * @param callback 请求回调 */ public static void get(String url, ResultCallback callback) { getmInstance().getRequest(url, callback); } /** * post请求 * * @param url 请求url * @param callback 请求回调 * @param params 请求参数 */ public static void post(String url, final ResultCallback callback, List<Param> params) { getmInstance().postRequest(url, callback, params); } public static <T> void post(String url, final ResultCallback callback, Map<String, T> params) { getmInstance().postRequest(url, callback, params); } /** * http请求回调类,回调方法在UI线程中执行 * * @param <T> */ public interface ResultCallback<T> { /** * 请求成功回调 * * @param response */ void onSuccess(T response); /** * 请求失败回调 * * @param e */ void onFailure(Exception e); } /** * post请求参数类 */ public static class Param { String key; String value; public Param() { } public Param(String key, String value) { this.key = key; this.value = value; } } }