//添加retrofit依赖
compile 'com.squareup.retrofit2:retrofit:2.3.0'
//添加gson转换器的依赖
compile 'com.squareup.retrofit2:retrofit:2.3.0'
//添加gson转换器的依赖
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
配置服务接口
public interface ApiService { //注解后面是路径,,,但是这个路径比较特殊 //https://www.zhaoapi.cn/----baseUrl ----http://163.16.11.22:8080/ // product/getProductCatagory----相对路径----linzhiling/lingzhiling.jpg @GET("product/getProductCatagory") Call<CategaryBean> getCategary(); //https://www.zhaoapi.cn/product/searchProducts?keywords=笔记本&page=1&source=android @GET("product/searchProducts") Call<SearchBean> getSearch(@QueryMap Map<String,String> map); //post传递的是表单数据 @FormUrlEncoded @POST("product/searchProducts") Call<SearchBean> postSearch(@FieldMap Map<String,String> map); @FormUrlEncoded @POST("product/searchProducts") Call<SearchBean> postSearch_02(@Field("keywords") String keywords, @Field("page") String page, @Field("source") String source); @GET("users/{user}/repos") //{user}请求路径上的占位符 Call<ResponseBody> getBlog(@Path("user") String user); // 访问的API是:https://api.github.com/users/{user}/repos // 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用) }
CategaryBean 为返回数据的实体类
// Unable to create converter转换器 for class com.dash.a05_retrofit.CategaryBean //不能够为CategaryBean创建一个转换器---response.body().string()---json字符串--Gson->CategaryBean //json xml jackSon --->对应着不同的转换器 public void getCategory(View view) { Retrofit retrofit = new Retrofit.Builder()//构建者模式 .baseUrl(Constant.BASE_URL)//设置baseUrl .addConverterFactory(GsonConverterFactory.create())//添加gson转换器 .build(); //需要使用retrofit创建一个网络请求的接口 ApiService apiService = retrofit.create(ApiService.class); Call<CategaryBean> call = apiService.getCategary(); call.enqueue(new Callback<CategaryBean>() { @Override public void onResponse(Call<CategaryBean> call, Response<CategaryBean> response) { if (response.isSuccessful()) { CategaryBean categaryBean = response.body(); //主线程还是子线程????---主线程,,retrofit自动完成了线程的切换 text_view.setText(categaryBean.getMsg()); } } @Override public void onFailure(Call<CategaryBean> call, Throwable t) { } }); } public void getCategory_02(View view) { //这部分代码其实是写在model里面的 Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constant.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); Map<String, String> params = new HashMap<>(); params.put("keywords","笔记本"); params.put("page","1"); params.put("source","android"); //Call<SearchBean> call = apiService.getSearch(params); //Call<SearchBean> call = apiService.postSearch(params); Call<SearchBean> call = apiService.postSearch_02("笔记本", "1", "android"); call.enqueue(new Callback<SearchBean>() { @Override public void onResponse(Call<SearchBean> call, Response<SearchBean> response) { text_view.setText(response.body().getData().get(0).getTitle()); } @Override public void onFailure(Call<SearchBean> call, Throwable t) { } }); } }