Retrofit A type-safe HTTP client for Android and Java .
Retrofit 是Square公司开发的基于Android 的网络请求框架,Retrofit2是基于okhttp实现的。使用注解配置网络请求参数,支持RxJava,支持多种数据格式的解析,支持同步和异步的网络请求。
使用之前可以先看一下Retrofit官方教程以及Retrofit Github地址.
1.添加依赖
下载jar包引入或在gradle 文件中添加
compile 'com.squareup.retrofit2:retrofit:(insert latest version)'
记得要在Menifest.xml文件中添加网络权限
<uses-permission android :name="android.permission.INTERNET" />
2.写result的实体类
public class AirResponse{
Stringname;
Stringpinyin;
......
}
3.写service接口
public interface TestService {
@GET("air/airCities")
CallgetAirResponse(@Query("key")String key);
}
4.创建retrofit实例
Retrofitretrofit=new Retrofit.Builder()
.baseUrl("http://web.juhe.cn:8080/environment/") // baseurl 一定要以/结尾
.addConverterFactory(GsonConverterFactory.create()) // 添加数据解析器用来处理result
.build();
TestService service=retrofit.create(TestService.class);
Call responseCall=service.getAirResponse(key);
这里用到了GsonConverterFactory和gson 因此我们要添加如下依赖
compile'com.google.code.gson:gson:2.8.2'
compile'com.squareup.retrofit2:converter-gson:2.2.0'
5.发送异步或同步请求
// AirResponse response=responseCall.execute().body();//同步请求,不能在主线程中运行
//异步请求
responseCall.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if(response!=null){
if(response.body().getResult()!=null){
textView.setText(""+response.body().getResult().size());
}
}
}
@Override
public void onFailure(Call call, Throwable t) {
Toast.makeText(getApplicationContext(),t.getMessage().toString(),Toast.LENGTH_LONG).show();
}
});
以上就是retrofit的简单使用
7.注解
Every method must have an HTTP annotation that provides the request method and relative URL. There are five built-in annotations: GET, POST, PUT, DELETE, and HEAD
每个方法都不许有http注解来支持请求方法和URL,有5种注解 GET, POST, PUT, DELETE, and HEAD
网络请求注解如下图所示
最常用的注解以及使用场景
最常用的注解以及使用场景8.数据解析器
Gson: com.squareup.retrofit2:converter-gson
Jackson: com.squareup.retrofit2:converter-jackson
Moshi: com.squareup.retrofit2:converter-moshi
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire
Simple XML: com.squareup.retrofit2:converter-simplexml
Scalars (primitives, boxed, and String): com.squareup.retrofit2:converter-scalars
支持多种数据格式,需要添加依赖
引用和参考:
网友评论