一、小牛初试
1.在Build.Gradle中导入Retorfit的第三方依赖
implementation 'com.squareup.retrofit2:retrofit:2.9.0'//更高版本请在Github上查看
2.创建接口
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;
public interface HttpBinService {
@POST("post") //POST方法使用POST
@FormUrlEncoded //使用表单方式提交填写@FormUrlEncoded
Call<ResponseBody> post(@Field("username") String username, @Field("password")String pwd);
//post方式请求,字段用Field "username"会由username参数替换补充到url
@GET("get")
Call<ResponseBody> get(@Query("username") String username, @Query("password") String pwd);
//get方式请求,字段用Query
@HTTP(method="GET",path="get",hasBody = false)
//path表示选择上边的其中一个,hasbody请求体默认为false,因为get不需要请求体。
Call<ResponseBody> http(@Query("username") String username, @Query("password") String pwd);
}
3.基本的初始化
//创建变量
private Retrofit retrofit;
private HttpBinService httpBinService;
//初始化
retrofit = new Retrofit.Builder().baseUrl("https://www.httpbin.org/").build();
httpBinService=retrofit.create(HttpBinService.class);
Call<ResponseBody> call= httpBinService.post("lance","123");
//Call<ResponseBody> call= httpBinService.get("lance","123");
//Call<ResponseBody> call= httpBinService.http("lance","123");
4.调用
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
Log.d("msg",response.body().string()+"");
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
二、注解的说明
方法注解:@GET @POST @PUT @DELETE @PATH @HEAD @OPTIONS @HTTP
标记注解:@FormUrlEncoded @Multipart @Streaming
参数注解:@Query @QueryMap @Body @Field @FieldMap @Part @PartMap
其他注解:@Path @Header @Headers @Url
@HTTP
在“一、小牛初试”中已经有案例。method选择get或者post,path表示选择之前已经写好的哪个接口来实现,hasbody表示是否有请求体(默认是false&#x