改造,callback204没有内容响应?

在Android上,我最初实现了一个像这样的Retrofit界面:

@DELETE(USER_API_BASE_URL + "/{id}") public void deleteUser(@Path("id") String id, Callback<User> callback); 

成功删除后,服务器返回204无内容。 这是导致callback触发失败, retrofit.RetrofitError: End of input at character 0 of ,因为它期待一个User对象与响应。

然后,我重写了这样的,使用Void而不是User

 @DELETE(USER_API_BASE_URL + "/{id}") public void deleteUser(@Path("id") String id, Callback<Void> callback); <-- VOID 

但是我从callback中得到了同样的错误。 什么是解决这个问题的正确方法? 谢谢。

  • 改造和OkHttpClient,在失败方法中捕获连接超时
  • 使用Retrofit rxjava concatWith时堆栈溢出
  • 使用RxJava和Retrofit的定期HTTP请求
  • 使用RxJava和Retrofit迭代列表并根据子查询扩充结果
  • 链式两个改装可观察物与RxJava
  • RxJavaCallAdapterFactory无法转换为Factory
  • 为什么在Android上使用Retrofit的RxJava doOnError()不起作用,但是Subscriber onError会起作用
  • 改造2:从响应机构获取JSON
  • 如同其他答案中提到的, Retrofit 2.x不再具有ResponseCallback 。 你想使用Response<Void>types。

    RxJava声明:

     @PUT Observable<Response<Void>> foo(); 

    标准声明:

     @PUT Call<Response<Void>> bar(); 

    杰克·沃顿在评论中指出了这个解决scheme。 使用ResponseCallback。

    编辑:这个反应不再有效的改造<2。