okhttp 公共类
来源:互联网 发布:类似星光大道投票软件 编辑:程序博客网 时间:2024/06/06 20:53
http://blog.csdn.net/lmj623565791/article/details/47911083
参照了鸿洋_大神的代码重写了自己需要的方法
public final static int CONNECT_TIMEOUT = 60;public final static int READ_TIMEOUT = 100;public final static int WRITE_TIMEOUT = 60;private static final OkHttpClient client = new OkHttpClient();//private static final Handler handler = new Handler();public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");private static Handler handler = new Handler();static { client.newBuilder().readTimeout(READ_TIMEOUT, TimeUnit.SECONDS); // 读取超时 client.newBuilder().writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS); // 写入超时 client.newBuilder().connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS); // 连接超时}/** * 同步get * * @param address * @return * @throws IOException */public static String syncGet(String address) throws IOException { Request request = new Request.Builder() .get() .url(address) .build(); Response response = client.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } else { throw new IOException("Unexpected code " + response); }}/** * 同步post * * @param address * @param jsonStr * @return * @throws IOException */public static String syncPost(String address, String jsonStr) throws IOException { RequestBody body = RequestBody.create(JSON, jsonStr); Request request = new Request.Builder() .post(body) .url(address) .build(); Response response = client.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } else { throw new IOException("Unexpected code " + response); }}/** * 异步get * * @param address * @param callback */public static void asynGet(String address, Callback callback) { Request request = new Request.Builder() .get() .url(address) .build(); client.newCall(request).enqueue(callback);}/** * 异步post * * @param address * @param jsonStr * @param callback */public static void asynPost(String address, String jsonStr, Callback callback) { RequestBody body = RequestBody.create(JSON, jsonStr); Request request = new Request.Builder() .post(body) .url(address) .build(); client.newCall(request).enqueue(callback);}/** * 异步get 可以访问主线程 * @param address * @param callback */public static void asynGet(String address, OkhttpUtil.ResultCallback callback) { Request request = new Request.Builder() .get() .url(address) .build(); deliveryResult(request, callback);}/** * 异步post 可以访问主线程 * @param address * @param jsonStr * @param callback */public static void asynPost(String address, String jsonStr, ResultCallback callback) { RequestBody body = RequestBody.create(JSON, jsonStr); Request request = new Request.Builder() .post(body) .url(address) .build(); deliveryResult(request, callback);}private static void deliveryResult(final Request request, final ResultCallback callback) { client.newCall(request).enqueue(new Callback() { @Override public void onFailure(okhttp3.Call call, IOException e) { sendFailedStringCallback(request, e, callback); } @Override public void onResponse(okhttp3.Call call, Response response) throws IOException { sendSuccessResultCallback(response.body().string() ,callback); } });}private static void sendFailedStringCallback(final Request request, final Exception e, final ResultCallback callback){ handler.post(new Runnable() { @Override public void run() { if (callback != null) callback.onError(request, e); } });}private static void sendSuccessResultCallback(final Object object, final ResultCallback callback){ handler.post(new Runnable() { @Override public void run() { if (callback != null) { callback.onResponse(object); } } });}public static abstract class ResultCallback<T>{ public abstract void onError(Request request, Exception e); public abstract void onResponse(T response);}
调用:
// 可以更新线程post请求OkhttpUtil.asynPost("http://localhost:9090/TomcatTest/test", "{'name':'shaomiao'}", new OkhttpUtil.ResultCallback<String>() { @Override public void onError(Request request, Exception e) { System.out.println("错误了"); } @Override public void onResponse(String response) { System.out.println("返回了"); }});// 可以更新线程get请求OkhttpUtil.asynGet("http://localhost:9090/TomcatTest/test", new OkhttpUtil.ResultCallback() { @Override public void onError(Request request, Exception e) { Toast.makeText(MainActivity.this, "错误", Toast.LENGTH_SHORT).show(); } @Override public void onResponse(Object response) { Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_SHORT).show(); }});
0 0
- okhttp 公共类
- OKHTTP封装公共参数
- 把OkHttp的网络获取方法写在公共类里
- okhttp公共参数拦截器
- OkHttp拦截器POST添加公共参数
- Okhttp 请求添加公共参数、公共Headers 方法
- OkHttp中Interceptor拦截器之公共参数请求封装
- okHttp+拦截器 拦截器用来放置公共参数
- OkHttp封装,以及拦截器,拦截公共参数
- okhttp常用工具类
- okhttp框架 工具类
- 【OkHttp】封装帮助类
- 工具类4.0 OkHttp
- Okhttp 工具类
- OkHttp封装类
- OkHttp封装类
- okhttp工具类
- OKHttp封装类
- HDU4289 水题...
- genymotion运行ARM架构程序
- Git 命令行基础
- Java模板引擎之Freemarker
- instanceof 算符是用来在运行时指出对象是否是特定类的一个实例
- okhttp 公共类
- java web 接收json串
- java综述
- android NoSuchMethodError 错误记录
- ACM(递归递推—C)
- 滑动冲突记录
- 北方大学 ACM 多校训练赛 第四场-D-积性函数(暴力,因子个数上界)
- android学习推荐网址(持续更新)
- android 代码样式规范