OkHttp(一)

1 简介

OkHttp是现今一个较为出众的网络通信库,能够代替原生的HTTPURLConnection,反对Http/SPDY,有着简略易用,拓展性好等长处。

2 HttpURLConnecti

让咱们先看看未应用OkHttp要怎么实现网络申请。

在未应用框架前,咱们基本上会应用原生的HttpClient(已淘汰)和HttpURLConnection来进行发送HTTP申请。

HttpURLConnection是一种多用途、轻量级的HTTP客户端,咱们大部分的应用程序能够应用它来进行HTTP操作。接下来简略应用其来发送一个Get办法的Http申请。

留神以下操作都是在子线程下进行的

  • (1)获取HttpURLConnection的实例
// 用URL对象来创立HttpURLConnection    URL murl = new URL("https://www.baidu.com");    HttpURLConnection connection = (HttpURLConnection)murl.openConnection;// 设置参数(超时工夫,读取超时,申请办法,header等    connection.setConnectionTimeout(8888);    connection.setRequestMethod("GET");    ...// POST申请还要将参数写入到输入流中
  • (2)连贯并获取输出流,并对其解决
    connection.connect();    mInputSteam = connection.getInputSteam();    // 可选    int code = mHttpURLConnection.getResponseCode();    String respose = converStreamToString(mInputStream);    Log.i("baidu", "申请状态码:" + code + "\n申请后果:\n" + respose);`    //依据理论状况,来判断如何解决流数据    mInputSteam.close();
  • (3)敞开连贯
    connection.disconnect();

以上就是HttpURLConnection的一个基本操作。

3 OkHttp的应用

3.1 Get申请

    //建造者模式构建对象    OkHttpClient client = new OkHttpClient();    Request request = new Request.Builder()                    .get()                    .url("https://www.4399.com")                    .build();    Call call = client.newCall(request);    try {    //1.同步申请调用的办法是call.execute(),外部采纳的是线程阻塞(始终期待直到线程返回后果)形式间接将后果返回到Response    Response response = call.execute();    //2.异步申请调用的办法是call.enqueue(Callback callback),该办法须要传入一个Callback期待后果回调的接口    call.enqueue(new Callback() {        @Override        public void onFailure(Call call, IOException e) {            Log.w("cozing", "申请失败");        }        @Override        public void onResponse(Call call, Response response) throws IOException {            //在这里解决失去的Response            Log.w("cozing", "申请胜利");        }    });} catch (IOException e) {    e.printStackTrace();}  

3.2 Post申请

    OkHttpClient client = new OkHttpClient();    // 将参数结构成表单对象    FormBody formBody = new FormBody.Builder()                .add("username", "admin")                .add("password", "admin")                .build();    Request request = new Request.Builder()                    .post(formBody)                    .url("https://www.4399.com")                    .build();    Call call = client.newCall(request);    try {    Response response = call.execute();    call.enqueue(new Callback() {        @Override        public void onFailure(Call call, IOException e) {            Log.w("cozing", "申请失败");        }        @Override        public void onResponse(Call call, Response response) throws IOException {            //在这里解决失去的Response            Log.w("cozing", "申请胜利");        }    });} catch (IOException e) {    e.printStackTrace();}  

以上就是OkHttp的一个根本应用,咱们不难看出因为其对网络申请性能进行了封装,使得整体的代码变得更加的简洁明了。

从下面的代码中,咱们不难看出,有几个较为重要的对象和办法,如Request,Call, Response对象,execute(),enqueue()办法等,这个就留到下一次的来探索。