美文网首页
OkHttp(1)-OkHttp的基本使用

OkHttp(1)-OkHttp的基本使用

作者: 红领巾程序猿 | 来源:发表于2018-04-09 21:19 被阅读0次

本系列文章是对OkHttp的使用、框架封装及源码分析所写。

一、主要内容

1、简介OkHttp

2、介绍OkHttp的基本使用

二、简介

  HTTP is the way modern applications network. It’s how we exchange data & media. Doing HTTP efficiently makes your stuff load faster and saves bandwidth.

OkHttp is an HTTP client that’s efficient by default:

1、HTTP/2 support allows all requests to the same host to share a socket.

2、Connection pooling reduces request latency (if HTTP/2 isn’t available).

3、Transparent GZIP shrinks download sizes.

4、Response caching avoids the network completely for repeat requests.

以上是Okhttp官网对Okhttp的介绍:

1、HTTP / 2支持允许同一主机的所有请求共享一个套接字。
2、连接池减少了请求延迟(如果HTTP / 2不可用)。在后面文章中会讲到连接池的概念。
3、支持gzip压缩。
4、对响应进行缓存,减少了请求次数。

三、使用

同步GET:

    //1

    OkHttpClient client = new OkHttpClient();

    //2

    Request request = new Request.Builder()

            .url("http://www.baidu.com")

            .build();

    try {

      //3

        Response response = client.newCall(request).execute();

      //4

        System.out.println("respone:" + response.body().string());

    } catch (IOException e) {

        e.printStackTrace();

    }

1、创建OkHttpClient。
2、创建Request。可以看出这个request,是通过构建者模式获得的。通过request我们可以配置请求的相关信息。例如:配置请求头或者缓存信息等。
3、通过newCall()向服务器发起请求。
4、接收服务器返回的信息。

注意:

网络请求是耗时操作,此请求是同步请求,会阻塞当前线程。

同步POST:

    //1

    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json; charset=utf-8");

    RequestBody body = RequestBody.create(mediaType, "{\"name\":\"wen_wen\")}");

  //2

    Request request = new Request.Builder()

            .url("http://www.baidu.com")

            .post(body)//请求体

            .build();

    //3

    try {

        Response response = client.newCall(request).execute();

        //4

        System.out.println("respone:" + response.body().string());

    } catch (IOException e) {

        e.printStackTrace();

    }

1、创建OkHttpClient。
2、创建Request。可以看出这个request,是通过构建者模式获得的。通过request我们可以配置请求的相关信息。例如:配置请求头或者缓存信息等。
3、通过newCall()向服务器发起请求。
4、接收服务器返回的信息。

区别:

POST的请求方式,需要定制请求的格式,例如:

MediaType mediaType = MediaType.parse("application/json; charset=utf-8");

RequestBody body = RequestBody.create(mediaType, "{\"name\":\"wen_wen\")}");

注意:

网络请求是耗时操作,此请求是同步请求,会阻塞当前线程。

异步GET

    //1

    OkHttpClient  httpClient  =  new OkHttpClient();

    //2

    Request  request  =  new Request.Builder().url("http://www.baidu.com")

            .build();

    //3

    httpClient.newCall(request).enqueue(new Callback() {

        @Override

        public void onFailure(Call call, IOException e) {



        }

        @Override

        public void onResponse(Call call, Response response) throws IOException {

            if (response.isSuccessful()) {

                //3

                System.out.println(response.body().string());

            }

        }

    });

1、创建OkHttpClient。
2、创建Request。可以看出这个request,是通过构建者模式获得的。通过request我们可以配置请求的相关信息。例如:配置请求头或者缓存信息等。
3、通过newCall()向服务器发起请求。
4、接收服务器返回的信息。

注意:

因为是异步请求,所以返回的结果是运行在工作线程中,需要将请求的结果返回到主线程中。

异步POST

//1

    OkHttpClient httpClient = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json; charset=utf-8");

    RequestBody body = RequestBody.create(mediaType, "{\"name\":\"wen_wen\")}");

    //2

    Request request = new Request.Builder().url("http://www.baidu.com")

            .post(body)

            .build();

    //3

    httpClient.newCall(request).enqueue(new Callback() {

        @Override

        public void onFailure(Call call, IOException e) {

        }

        @Override

        public void onResponse(Call call, Response response) throws IOException {

            if (response.isSuccessful()) {

                System.out.println(response.body().string());

            }

        }

    });

1、创建OkHttpClient。
2、创建Request。可以看出这个request,是通过构建者模式获得的。通过request我们可以配置请求的相关信息。例如:配置请求头或者缓存信息等。
3、通过newCall()向服务器发起请求。
4、接收服务器返回的信息。

区别:

POST的请求方式,需要定制请求的格式,例如:

MediaType mediaType = MediaType.parse("application/json; charset=utf-8");

RequestBody body = RequestBody.create(mediaType, "{\"name\":\"wen_wen\")}");

注意:

因为是异步请求,所以返回的结果是运行在工作线程中,需要将请求的结果返回到主线程中。

相关文章

网友评论

      本文标题:OkHttp(1)-OkHttp的基本使用

      本文链接:https://www.haomeiwen.com/subject/yedwhftx.html