说明:网络请求框架Retrofit的基本使用
Retrofit:Android网络请求的框架的封装,底层基于OkHttp。它的网络请求是由OkHttp完成,而Retrofit则是负责网络请求接口的封装。
添加依赖
implementation "com.squareup.retrofit2:retrofit:2.9.0"
一 .根据Http接口创建Java接口
HttpbinService.java
package com.cdw.studyokhttp;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
//根据Http接口创建Java接口
public interface HttpbinService {
//call使用retrofit2的包,ResponseBody使用okhttp3的包,否则报错
@POST("post")
@FormUrlEncoded
Call<ResponseBody>post(@Field("username") String userName, @Field("password")String pwd);
@GET("get")
Call<ResponseBody>get(@Query("username") String userName, @Query("password") String pwd);
}
二.创建Retorfit对象,并生成接口实现类对象
//构建者
retrofit = new Retrofit.Builder().baseUrl("https://www.httpbin.org/").build();
//创建httpbinService对象
httpbinService =retrofit.create(HttpbinService.class);
三.接口实现类对象调用对应方法获得响应
retrofit2.Call<ResponseBody> call = httpbinService.post("sr", "123");
call.enqueue(new retrofit2.Callback<ResponseBody>() {
//请求完成
@Override
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
try {
Log.i(TAG, "onResponse: "+response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
//请求失败
@Override
public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {
}
});
结束