首先介绍一下:
HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性。
1、支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接
2、连接池减少请求延时
3、透明的GZIP压缩减少响应数据的大小
4、缓存响应内容,避免一些完全重复的请求
使用步骤
1、先是依赖
<!-- okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.2.0</version>
</dependency>
2、然后就要开工了,先来说说GET请求到服务端
public static void syncGet(String url){
// 创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)//设置链接超时
.writeTimeout(10, TimeUnit.SECONDS) // 设置写数据超时
.readTimeout(30, TimeUnit.SECONDS) // 设置读数据超时
.build();
// 创建一个请求
Request request = new Request.Builder().url(url).build();
try {
Response response = okHttpClient.newCall(request).execute();
/**
* 获取返回的数据,可通过response.body().string()获取,默认返回的是utf-8格式;
* string()适用于获取小数据信息,如果返回的数据超过1M,建议使用stream()获取返回的数据, 因为string()
* 方法会将整个文档加载到内存中。
*/
// 打印数据
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
3、接着就是POST了,与GET略有不同。
public static void postFromParameters(String url,String name,String value) {
//OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)//设置链接超时
.writeTimeout(10, TimeUnit.SECONDS) // 设置写数据超时
.readTimeout(30, TimeUnit.SECONDS) // 设置读数据超时
.build();
//表单键值对
RequestBody formBody = new FormBody.Builder().add(name,value).build();
//请求
Request request = new Request.Builder().url(url).post(formBody).build();
okHttpClient.newCall(request).enqueue(new okhttp3.Callback() {
//成功后的回调
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
}
//失败后的回调
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
});
}
4、好啦大概就这样子了,后面继续分享 附上git上的demo。