Android学习笔记:OkHttp

本文详细介绍了Android中OkHttp的使用,包括同步和异步请求的GET和POST方式,请求流程,优点和缺点,以及设计模式的应用。OkHttp提供高效的连接池,支持GZIP压缩和HTTP缓存,其请求失败时会自动重试,并支持SPDY协议。文中还提到了OkHttp在实际项目中的应用示例。
摘要由CSDN通过智能技术生成

OkHttp的Github地址:https://github.com/square/okhttp

OkHttp非常高效,支持SPDY、连接池、GZIP和HTTP缓存。

在Android Studio中使用不需要下载jar包,直接添加依赖即可:

compile 'com.squareup.okhttp3:okhttp:3.13.1'

添加上述依赖会自动下载两个库,一个是OkHttp库,一个是Okio库,后者是前者的通讯基础。

添加权限

<uses-permission android:name="android.permission.INTERNET"/>

同步请求:执行请求的操作是阻塞式,直到HTTP响应返回。
(OKHttp的execute方法是同步方法)

异步请求:类似于非阻塞式请求,它的执行结果一般都是通过接口回调的方式告知调用者。
(OkHttp的enqueue方法是异步方法)

常用的方法主要有两个:GET和POST。GET表示希望从服务器那里获取数据,而POST则表示希望提交数据给服务器。

注:Android4.4之后的HttpUrlConnection的实现是基于OkHttp


一、同步请求-GET

// 创建一个OkHttpClient的实例
OkHttpClient client = new OkHttpClient();
//想要发起一条HTTP请求,就需要创建一个Request对象,可以在最终的build()之前连缀很多其他方法来丰富这个Request对象
Request request = new Request.Builder()
	.url("http://www.baidu.com")
	.build();
//调用OkHttpClient的newCall()方法来创建一个Call对象,并调用它的execute()方法来发送请求并获取服务器返回的数据
//response对象就是服务器返回的数据
Response response = client.newCall(request).execute();
//得到返回的具体内容
String responseData = response.body().string();

二、异步请求-GET

OkHttpClient ckient = new OkHttpClient();
Request request = new Request.Builder()	
	.url("http://www.baidu.com")
	.build();
Call call = client.newCall(request);
call.enqueue(new Callback(){
   
	@Override
	public void onFailure(Call call, IOException e){
   
	}
	@Override
	public void onResponse(Call call, Response response) throws IOException{
   
		String responseData = response.body().string();
		Log.d(TAG, str);
	}
});

三、同步请求-POST

//创建一个OKHttpClient实例
OkHttpClient client = new OkHttpClient();
//如果要发起Post请求,则需要先构建一个RequestBody对象存放待提交的参数
RequestBody requestBody = new FormBody.Builder()
	.add("username", "admin")
	.add("password", "123456")
	.build();
//然后在Request.Builder中调用一下post()方法,并将RequestBody对象传入
Request request = new Request.Builder()
	.url("http://www.baidu.com")
	.post(requestBody)
	.build();
//调用execute()方法来发送请求并获取服务器返回的数据
Response response = client.newCall(request).
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值