【发布时间】:2018-07-25 14:13:43
【问题描述】:
我已经创建了一个使用 Retrofit2 删除 MySQL 数据库中某些数据的方法,但它总是抛出这样的错误:
java.lang.IllegalArgumentException: URL query string "apicall=deleteBooking&={id}" must not have replace block. For dynamic query parameters use @Query. for method UserService.deleteBooking
这是我的 deleteBooking 方法:
public void deleteBooking(int id){
Call<BookingInfo> call = userService.deleteBooking(id);
call.enqueue(new Callback<BookingInfo>() {
@Override
public void onResponse(Call<BookingInfo> call, Response<BookingInfo> response) {
if(response.isSuccessful()){
Log.i("DELETE RESPONSE: ", response.body().toString());
finish();
}
}
@Override
public void onFailure(Call<BookingInfo> call, Throwable t) {
Log.e("DELETE ERROR: ", t.getMessage());
}
});
}
这是我的 UserService 接口:
public interface UserService {
@GET("api.php?apicall=getBookings")
Call<GetBookingInfo> getBookings();
@FormUrlEncoded
@POST("api.php?apicall=createBooking")
Call<BookingInfo> addBooking(@FieldMap HashMap<String, String> booking);
@PUT("api.php?apicall=updateStatus")
Call<BookingInfo> updateStatus(@Path("status") String status, @Body BookingInfo booking);
@DELETE("api.php?apicall=deleteBooking&={id}")
Call<BookingInfo> deleteBooking(@Query("id") int id);
}
我已将调用 deleteBooking 更改为@Query(我搜索了几个问题,答案总是必须更改为@Query,在此之前我使用@Path),但它仍然抛出错误。我不知道这个问题的解决方案。如果您想了解更多信息,请随时询问,我会给您所需的代码等。谢谢!
【问题讨论】:
-
删除这个 &={id}
-
从@DELETE 注释中移除 '&={id}'