Android访问网络主要有两种方式,分别是原生方式和调用三方库(OkHttp)。
1. Android 原生方式
Android原生方式主要有两种方式,分别是:
1.1 HttpCLient
HttpClient是Android原生支持的一种访问web的方式,但是由于Api接口太多,导致难以维护且异常太多,因此在Android6.0以后不再支持。在Android 6.0之后的版本已经无法搜到和HttpClient相关的类了,因此准确的说原生的只剩下一个原生类支持web访问:HttpURLConnection。
1.2 HttpURLConnection
HttpURLConnection是Android原生支持的另一种访问web的方式,目前仍可用。
1.2.1 使用方法
HttpURLConnection使用方法如下:
// 创建一个url
URL url = *new* URL("http://www.baidu.com");
// 创建一个HttpURLConnection
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// 设置HttpURLConnection各种属性,例如连接、读 超时时间,http请求的方法等
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setConnectTimeout(10000);
httpURLConnection.setReadTimeout(200);
// 获取服务器返回流
InputStream inputStream = httpURLConnection.getInputStream();
// 关闭httpURLConnection
httpURLConnection.disconnect();
2. 三方库方式
除了Android原生方法之外,还有使用三方库的方式实现Android设备与net的交互。其中是最主流的三方库就是OkHttp.
2.1 OkHttp
OkHttp是一个开源的三方库,由于其优异的特性和解耦,使得OkHttp成为最主流的三方库。
2.1.1 使用方法
使用OkHttp需要先添加依赖
dependencies {
...
implementation('com.squareup.okhttp3:okhttp:3.4.1')
}
OkHttp语言占比-----图片来源于github.com/square/okht…
OkHttp最新版本已经以kotlin为主,因此选择一个较低的版本,这样就都是java的代码,比较方便看。
以get请求为例,使用OkHttp主要有两种方式,分别是同步请求和异步请求。
2.1.1.1 同步请求
// 1.创建okhttp客户端
OkHttpClient client=new OkHttpClient.Builder().readTimeout(5, TimeUnit.SECONDS).build();
// 2.get请求
Request request = new Request.Builder()
.url("http://www.baidu.com")
.build();
Response response = null;
try {
// 3.获取response数据
response = okHttpClient.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
// 4.从response中获取需要的数据
String responseData = response.body().toString();
2.1.1.2 异步请求
// 1.创建OkHttpClient
OkHttpClient asyncOkHttpClient = new OkHttpClient.Builder().build();
// 2.创建request对象
Request asyncRequest = new Request.Builder()
.url("http://www.baidu.com")
.build();
Call asyncCall = asyncOkHttpClient.newCall(request);
asyncCall.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
从以上使用方法中可以看出,OkHttp使用主要涉及四个基本对象:OkHttpClient、Reques、Call、Response 。这四个类的调用顺序如下:
下一篇文章我们将从OkHttp的使用方法来看看那OkHttp的源码。