Retrofit介绍
适用于 Android 和 Java 的类型安全HTTP 客户端
特点:
1、性能好,处理快,使用简单
2、使用REST API设计风格
3、默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强。
4、默认使用Gson解析
使用
步骤: 1、导包
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
2、代码步骤:
- 定义一个接口(封装URL地址和数据请求) RequestServices.java
把基础地址都放在一个类里,方便调用 Constant.java
- 实例化Retrofit
- 通过Retrofit实例创建接口服务对象
- 接口服务对象调用接口中方法,获得Call对象
- Call对象执行请求(异步、同步请求)
全部代码:
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import java.io.IOException;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
public class testretrofitActivity extends AppCompatActivity {
private Context mContext = this;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testretrofit);
initView();
initRetrofit();
}
private void initView(){
textView = (TextView) findViewById(R.id.tv_alipay);
}
private void initRetrofit(){
//获取Retrofit对象,设置地址
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.URL_BASE)
.build();
Log.i("LHD","1");
RequestServices requestServices = retrofit.create(RequestServices.class);
Call<ResponseBody> call = requestServices.getString();
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()){
try {
Log.i("LHD",response.body().toString());
//返回的结果保存在response.body()中
String result = response.body().string();
//onResponse方法是运行在主线程也就是UI线程的,所以我们可以在这里
//直接更新UI
textView.setText(result);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.i("LHD","访问失败");
}
});
}
private class RequestServices {
public Call<ResponseBody> getString() {
return null;
}
}
}
注解
Retrofit使用大量注解来简化请求,Retrofit将okhttp请求抽象成java接口,使用注解来配置和描述网络请求参数。
1、请求方法注解
| 请求方法注解 | 说明 |
|---|---|
| @GET | get请求 |
| @POST | post请求 |
| @PUT | put请求 |
| @DELETE | delete请求 |
| @PATCH | patch请求,该请求是对put请求的补充,用于更新局部资源 |
| @HEAD | head请求 |
| @OPTIONS | options请求 |
| @HTTP | 通过注解,可以替换以上所有的注解,它拥有三个属性:method、path、hasBody |