您的位置:首页 > 理论基础 > 计算机网络

用回调封装OKHttp

2016-10-18 11:53 134 查看
1、封装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);
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: