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
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()); } }); }
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论