关于okhttp:OKHttp一基础使用

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()办法等,这个就留到下一次的来探索。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理