OkHttp

  一: 介绍

       Android网络请求框架较多,原生的有HttpClient、HttpUrlConnection;第三方的有okhttp、Volley等。原生的请求较为原始,使用起来比较繁琐。第三方的okhttp是著名公司Square的开源框架,使用方便,有详细的介绍文档。详细信息可以参考square官网http://square.github.io/okhttp/。文档官网:http://square.github.io/okhttp/3.x/okhttp/ 。

二:注意事项

   1. okhttp内部依赖于okio,所以导入包的时候okhttp.jar和okio.jar都需要导入

    2. okhttp的回调是在子线程里,不能直接在里边更新ui。

三:使用举例

    3.1使用说明:

       a)首先要构造一个Request,可以是get类型的,只有url地址;也可以是post请求,给Request设置对应的head和body.

       b)构造一个OkHttpClient,通过OkHttpClient执行Request请求,可以设置回调Callback

       c) CallBack里的回调:

         onFailure(Call paramCall, IOException paramIOException);

         onResponse(Call paramCall, Response paramResponse);

    3.2:

    a)  发起一个get请求和post请求的示例

/**
* @functions: 执行一个get请求,可以设置一些超时 代理
* @param url: url地址
* @param callback :响应的回调 
*/
public void dealGet(String url , ICall iCall){
this.iCall = iCall ;
//构造请求
Request request = new Request.Builder().url(url).build();
runRequest(request);
}


/**
* 登录接口的测试
* @param username 用户名
* @param password 密码
* @param httpCallback 请求回调
*/
public void dealPostlogin(String username, String password , ICall iCall) {
if (iCall == null) {
return;
}
this.iCall = iCall;
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
return;
}
FormBody.Builder bodyBuilder = new FormBody.Builder();
bodyBuilder.add("grant_type", "password");
bodyBuilder.add("username", username);
bodyBuilder.add("password", password);
FormBody body = bodyBuilder.build();
//头部信息
Builder mBuilder = new Request.Builder();
mBuilder.url("https://oauth.haoshitong.com/oauth2/token");
mBuilder.header("Authorization", getAuthorization());
mBuilder.post(body);
Request request = mBuilder.build();
runRequest(request);
}


private void runRequest(Request request){
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
//执行异步请求
okHttpClient.newCall(request).enqueue(new Callback() {

@Override
public void onResponse(Call arg0, Response arg1) throws IOException {
Message message = new Message();
message.what = MSG_RESPONE;
message.obj = arg1;
handler.sendMessage(message);
}

@Override
public void onFailure(Call arg0, IOException arg1) {
Message message = new Message();
message.what = MSG_FAILURE;
message.obj = arg1;
handler.sendMessage(message);
}
});
}

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值