用回调封装OKHttp
2016-10-18 11:53
134 查看
1、封装String字符串
回调接口:
package com.example.testweixinshare;
public interface Callback<T> {
public void onCallback(final T result);
}
OKHtpp依赖包: 点击打开链接
2、封装Bitmap对象
3、Post封装String字符串
调用的执行的方法:
private static void request(String url,final Callback callback){ final Handler handler =new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String result=(String) msg.obj; if(result!=null && !"".equals(result)){ callback.onCallback(result); } } }; final OkHttpClient mOkHttpClient=new OkHttpClient(); final Request request=new Request.Builder().url(url).get().build(); try { new Thread(new Runnable() { @Override public void run() { Response response; try { response = mOkHttpClient.newCall(request).execute(); if(response.isSuccessful()){ Message message=new Message(); message.obj=response.body().string(); handler.sendMessage(message); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } catch (Exception e) { e.printStackTrace(); } }通过get方式获取:
public static void getUserInfo(String access_token,String openid,Callback<String> callback){ String url="https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openid+""; request(url,callback); }调用的执行的方法:
Httpget.getUserInfo(access_token,openid,new Callback<String>() { @Override public void onCallback(String result) { // 在这里处理你的回调结果 } }); }
回调接口:
package com.example.testweixinshare;
public interface Callback<T> {
public void onCallback(final T result);
}
OKHtpp依赖包: 点击打开链接
2、封装Bitmap对象
private static void requestBitmap(String url,final Callback callback){ final Handler handler =new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bitmap result=(Bitmap) msg.obj; if(result!=null && !"".equals(result)){ callback.onCallback(result); } } }; final OkHttpClient mOkHttpClient=new OkHttpClient(); final Request request=new Request.Builder().url(url).get().build(); try { new Thread(new Runnable() { @Override public void run() { Response response; try { response = mOkHttpClient.newCall(request).execute(); if(response.isSuccessful()){ InputStream inputStream=response.body().byteStream(); Bitmap bitmap=BitmapFactory.decodeStream(inputStream); Message message=new Message(); message.obj=bitmap; handler.sendMessage(message); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } catch (Exception e) { e.printStackTrace(); } }通过get方式获取:
public static void getHeadImgUrl(String url,final Callback<Bitmap> callback){ requestBitmap(url,callback); }调用的执行的方法:
Httpget.getHeadImgUrl(headimgurl, new Callback<Bitmap>() { @Override public void onCallback(Bitmap result) { iv_head_portrait.setImageBitmap(result); } });
3、Post封装String字符串
public static void postRequest(String url,final Callback callback){ final Handler handler =new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String result=(String) msg.obj; if(result!=null && !"".equals(result)){ callback.onCallback(result); } } }; final OkHttpClient mOkHttpClient=new OkHttpClient(); String xml="<xml><appid>appid</appid><attach>支付测试</attach><body>APP支付测试</body><mch_id>10000100</mch_id><nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str><notify_url>http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php</notify_url><out_trade_no>1415659990</out_trade_no><spbill_create_ip>14.23.150.211</spbill_create_ip><total_fee>1</total_fee><trade_type>APP</trade_type><sign>0CB01533B8C1EF103065174F50BCA001</sign></xml>"; RequestBody body=RequestBody.create(MediaType.parse("application/octet-stream"), xml.getBytes()); final Request request=new Request.Builder().url(url).post(body).build(); try { new Thread(new Runnable() { @Override public void run() { Response response; try { response = mOkHttpClient.newCall(request).execute(); if(response.isSuccessful()){ Message message=new Message(); message.obj=response.body().string(); handler.sendMessage(message); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } catch (Exception e) { e.printStackTrace(); } }
调用的执行的方法:
Httpget.postRequest("https://api.mch.weixin.qq.com/pay/unifiedorder", new Callback<String>() { @Override public void onCallback(String result) { Log.i("Result", result); } });
相关文章推荐
- 基于鸿洋okhttp封装工具类okhttputils 返回数据回调封装
- okhttp3相关封装配置(三):Callback封装,添加onStart()和onFinish()回调方法
- OkHttp 使用 get post UI线程回调 上传 下载 进度监听 更好地封装
- okhttp请求回调封装文章推荐
- okhttp +fastJson 在UI层的回调封装
- OkHttp封装,自适用
- 好吧,又一种C++事件回调封装以及相关的零碎讨论
- Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例
- Android工作笔记之okHttp,Xutils等框架的2次封装实例
- 非常简单的OKhttp封装工具类
- 创意封装OkHttp,简单易用,你还在等什么呢?
- RxJava+Retrofit+OkHttp深入浅出-终极封装三(文件上传)
- 跳出封装剖析ASP.NET脚本回调的原理
- okHttp封装库
- 好吧,又一种C++事件回调封装以及相关的零碎讨论
- Android 一个改善的okHttp封装库
- okHttp的简单封装使用
- OkHttp简单的封装及使用
- OkHttp最新封装
- okhttp 2.x 用法/封装