okhttp的学习与总结

首先介绍一下:
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。

©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值