Retrofit简介### 1、导入依赖包

gradle.xml

  1. implementation 'com.squareup.retrofit2:retrofit:2.5.0'
  2. implementation 'com.squareup.okhttp3:okhttp:3.12.0' //由于Retrofit是依赖于okhttp3,使用需要导入okhttp3的依赖包

2、添加网络权限

AndroidMainfest.xml

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

3、创建用于描述网络请求的接口

  1. public interface TranslationService {
  2. @GET("ajax.php?a=fy&f=auto&t=auto")
  3. Call<Translation> translate(@Query("w") String query);
  4. @POST("translate?doctype=json&jsonversion=&type=&keyfrom=&model=&mid=&imei=&vendor=&screen=&ssid=&network=&abtest=")
  5. @FormUrlEncoded
  6. Call<Translation1> translate1(@Field("i") String target);
  7. }

4、创建Retrofit实例

MainActivity.java

  1. Retrofit retrofit = new Retrofit.Builder()
  2. .baseUrl("http://fy.iciba.com/")
  3. .addConverterFactory(GsonConverterFactory.create()) //Gson转换器,需要导入依赖 implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
  4. .build();

5、创建网络请求接口的实例,并配置网络请求的参数

MainActivity.java

  1. TranslationService service = retrofit.create(TranslationService.class);

6、发送网络请求(同步、异步)

7、处理返回解决(或异常)

MainActivity.java

  1. Call<Translation> call = service.translate(data);
  2. call.enqueue(new Callback<Translation>() { // 发送网络请求
  3. //请求成功时回调
  4. @Override
  5. public void onResponse(Call<Translation> call, Response<Translation> response) {
  6. showTV.setText(response.body().show());
  7. }
  8. //请求失败时回调
  9. @Override
  10. public void onFailure(Call<Translation> call, Throwable t) {
  11. Log.e(TAG, "连接服务器失败! ");
  12. Toast.makeText(MainActivity.this, "连接服务器失败!", Toast.LENGTH_SHORT).show();
  13. }
  14. });

Retrofit的拓展使Retrofit的拓展使用

Retrofit支持Rxjava和prototocobuff

  1. Retrofit retrofit = new Retrofit.Builder()
  2. .baseUrl("http://fy.iciba.com/")
  3. .addConverterFactory(GsonConverterFactory.create()) //Gson转换器,需要导入依赖 implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
  4. .addConverterFactory(ProtoConverterFactory.create()) // 支持Prototocobuff解析
  5. .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 支持RxJava
  6. .build();