今年一直使用retrofit簡單做個總結。
示例接口:127.0.0.1:8080/DecrepitHouse/house/user_list
使用retrofit方式
public interface AddressApi { //用戶列表 @GET("DecrepitHouse/house/user_list") Call<BaseBean<List<AddressBean>>> getUser(); }調用getuser
private void getUserList() { userList = new ArrayList<>(); RetrofitManager.getInstance(Constant.BASEURL1).createReq(AddressApi.class) .getUser().enqueue(new Callback<BaseBean<List<AddressBean>>>() { @Override public void onResponse(Call<BaseBean<List<AddressBean>>> call, Response<BaseBean<List<AddressBean>>> response) { if (response.body() != null && response.body().getCode() == 200) { swLayout.setRefreshing(false); userList=response.body().getRows(); // 根據a-z進行排序源數據 Collections.sort(userList, pinyinComparator); adapter = new AdderssAdapter(getActivity(), userList, 0); lvAddress.setAdapter(adapter); } else { swLayout.setRefreshing(false); } } @Override public void onFailure(Call<BaseBean<List<AddressBean>>> call, Throwable t) { swLayout.setRefreshing(false); } }); }簡單的查詢:示例接口:127.0.0.1:8080/DecrepitHouse/house/listunderling?user_id=1&username=zhangsan
接口文件:
public interface AddressApi { @GET("DecrepitHouse/house/listunderling") Call<BaseBean<List<AddressBean>>> getBranchList(@Query("user_id") String user_id,
@Query("username") String username); }@QueryMap的使用
示例接口:127.0.0.1:8080/DecrepitHouse/house/listunderling?
userid=1&username=zhangsan&age=20&sex=1
接口文件
public interface AddressApi { @GET("DecrepitHouse/house/listunderling") Call<BaseBean<List<AddressBean>>> getBranchList(@QueryMap Map<String,Object> params); }在界面調用:
private void getBranch(){ Map<String,Object> params=new HashMap<>(); params.put("userid",1); params.put("username","wangshan"); params.put("age",25); params.put("sex",1); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constant.BASEURL) .addConverterFactory(GsonConverterFactory.create()) .build(); AddressApi addressApi = retrofit.create(AddressApi.class); Call<BaseBean<List<AddressBean>>> call = addressApi.getBranchList(params); call.enqueue(new Callback<BaseBean<List<AddressBean>>>() { @Override public void onResponse(Call<BaseBean<List<AddressBean>>> call, Response<BaseBean<List<AddressBean>>> response) { if(response.body().getCode()==200){ //成功後的執行邏輯 } } @Override public void onFailure(Call<BaseBean<List<AddressBean>>> call, Throwable t) { } }); }post表單提交
接口示例:127.0.0.1:8080/MVNFHM/mobile_login?USERNAME=dashan&PASSWORD
public interface LoginApi { @FormUrlEncoded @POST("MVNFHM/mobile_login") Call<BaseBean<User>> login(@Field("USERNAME") String USERNAME, @Field("PASSWORD") String PASSWORD); }調用這個接口的請求
private void getUser(){ if(TextUtils.isEmpty(account.getText().toString().trim())){ Toast.makeText(LoginActivity.this,"請輸入賬號",Toast.LENGTH_SHORT).show(); return; }if(TextUtils.isEmpty(etPassword.getText().toString().trim())){ Toast.makeText(LoginActivity.this,"請輸入密碼",Toast.LENGTH_SHORT).show(); return; } RetrofitManager.getInstance(Constant.BASEURL).createReq(LoginApi.class) .login(account.getText().toString().trim(),etPassword.getText().toString().trim()) .enqueue(new Callback<BaseBean<User>>() { @Override public void onResponse(Call<BaseBean<User>> call, Response<BaseBean<User>> response) { //登錄成功後的返回 if(response.body().getCode()==1){ User user=response.body().getRows(); SPUtils.savePlumSession(user.getuSER_ID(),user.getuSERNAME()); Intent intent=new Intent(LoginActivity.this,MainActivity.class); startActivity(intent); finish(); }else{ //提示錯誤的類型,信息 Toast.makeText(LoginActivity.this,response.body().getMessage(),Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(Call<BaseBean<User>> call, Throwable t) { Toast.makeText(LoginActivity.this,"獲取數據失敗",Toast.LENGTH_SHORT).show(); } }); }@FieldMap
示例接口:127.0.0.1:8080/MVNFHM/house/saveOrUpdate
參數jznd,zflb,cs,js,zdmj,jzmj,zfsyqk
public interface AddhouseApi { //添加房屋信息 @FormUrlEncoded @POST("MVNFHM/house/saveOrUpdate") Call<JsonResult> addHouse(@FieldMap Map<String,String> params); }調用時候:
private void updateHouse() { Map<String, String> params = new HashMap<>(); params.put("jznd", tvNd.getText().toString().trim()); params.put("zflb", tvCategory.getText().toString().trim()); params.put("cs", tvCengnum.getText().toString().trim()); params.put("js", etJiannum.getText().toString().trim()); params.put("zdmj", etDiarea.getText().toString().trim()); params.put("jzmj", etArea.getText().toString().trim()); params.put("zfsyqk", tvUsestate.getText().toString().trim()); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constant.BASEURL) .addConverterFactory(GsonConverterFactory.create()) .build(); AddhouseApi addhouseApi = retrofit.create(AddhouseApi.class); Call<JsonResult> call = addhouseApi.updateHouse(params); call.enqueue(new Callback<JsonResult>() { @Override public void onResponse(Call<JsonResult> call, Response<JsonResult> response) { if (response.body() != null && response.body().getCode() == 1) { Log.i(TAG, "onResponse: **********"+response.body().toString()); Toast.makeText(getApplicationContext(), response.body().getMessage(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), response.body().getMessage(), Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(Call<JsonResult> call, Throwable t) { } }); }@Part上傳文件時候使用過
示例接口:127.0.0.1:8080/wssupload
參數housenum,多張圖片
public interface PhotoUploadApi { //房屋多圖上傳 @Multipart @POST("wssupload") Call<JsonResult> uploadImage(@Part("housenum") String housenum, @PartMap Map<String, RequestBody> imgs1); }調用時候
private void upLoadPhoto() { Map<String, RequestBody> photos = new HashMap<>(); if (imagePaths.size()>0) { for (int i=0;i<imagePaths.size();i++) { String substring = imagePaths.get(i).substring(imagePaths.get(i).lastIndexOf("/") + 1, imagePaths.get(i).length()); photos.put("file\"; filename="+substring,RequestBody.create(MediaType.parse("multipart/form-data"), new File(imagePaths.get(i)))); } } Retrofit retrofit=new Retrofit.Builder() .baseUrl(Constant.ENDPOINT) .addConverterFactory(GsonConverterFactory.create()) .build(); PhotoUploadApi photoapi= retrofit.create(PhotoUploadApi.class); Call<JsonResult> call = photoapi.uploadImage(housecode, photos); call.enqueue(new Callback<JsonResult>() { @Override public void onResponse(Call<JsonResult> call, Response<JsonResult> response) { Log.i(TAG, "onResponse:成功 "+response.body().toString()); } @Override public void onFailure(Call<JsonResult> call, Throwable t) { } }); }以上就是我最常用的方法,希望能幫到大家。