Okhttp+Gson基本使用

1.简介

HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:

  • 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接
  • 连接池减少请求延时
  • 透明的GZIP压缩减少响应数据的大小
  • 缓存响应内容,避免一些完全重复的请求

当网络出现问题的时候OkHttp依然坚守自己的职责,它会自动恢复一般的连接问题,如果你的服务有多个IP地址,当第一个IP请求失败时,OkHttp会交替尝试你配置的其他IP,OkHttp使用现代TLS技术(SNI, ALPN)初始化新的连接,当握手失败时会回退到TLS 1.0。

note: OkHttp 支持 Android 2.3 及以上版本Android平台, 对于 Java, JDK 1.7及以上.

(以上都是抄的)

2.使用

(1).添加网络权限

AndroidManifest.xml添加如下代码


(2).添加依赖

build.gradle下添加

implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.7'

(3).基本使用

异步网络请求

  1. new OkHttpClient
  2. 构造Request对象
  3. 创建call对象
  4. 通过call.enqueue()来提交异步网络请求
String url = "http://wwww.baidu.com";
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
        .url(url)//网络请求的网址
        .get()//默认是GET请求,可省略,也可以写其他的
        .build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        Log.d(TAG, "onFailure ");
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        Log.d(TAG, "onResponse: " + response.body().toString());
    }
});

同步网络请求

前面的步骤和异步的相同,但是他通过call.execute()来发送网络请求,由于网络请求是延时的,会阻塞调用的线程,所以在Android中应放在子线程中执行。

note.Android 3.0不允许在主线程访问网络。

Gson的使用

  1. 创建gson的对象
  2. 创建数据类的对象
Gson gson = new Gson();
Person person = gson.fromJson(jsonData,Person.class);//非数组
List people = gson.fromJson(jsonData,new TypeToken>(){}.getType());//数组

这样,我们就完成了通过网络请求对数据的处理。

那什么是数据类呢???

其实很简单,简单的说就是用来存放我们获取的json格式数据的类。他首先需要有和json一样的数据结构,其次我们建议将变量全部设为private,然后去实现它的get和set方法(如果是只读数据类),则只需要实现get方法即可。

example :

import java.util.List;
import java.util.Map;

public class Actor {
    private String name;
    private List fans;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List getFans() {
        return fans;
    }

    public void setFans(List fans) {
        this.fans = fans;
    }

}
 {

      "name":"王尼玛",

      "fans":[{

            "name":"小王",

            "age":"7"

           },{

            "name":"小尼玛",

            "age":"10"

           }]

      }

你可能感兴趣的:(Okhttp+Gson基本使用)