Retrofit 2.0方法无响应

Retrofit 2.0 method without response

在我当前的 android 项目中,我使用新的 Retrofit 2.0 库将一些数据发送到我的 Web 服务器。我只想 运行 那里的脚本,而服务器没有 return 任何东西。我想我可以用这个方法做到这一点:

@POST("persons/insert.php")
Call<Void> insert(@Field("Name") String name);

我现在的问题是,虽然服务器 returns 200,但 Retrofit 跳转到 onFailure 方法。发生这种情况是因为没有任何内容可以转换为 Void。那么我应该如何修复这个方法呢?如果服务器发回 200,我希望调用 onResponse 方法,如果发生错误,则调用 onFailure 方法。我怎样才能做到这一点?

你可以return一个ResponseBody.

@POST("persons/insert.php")
Call<ResponseBody> insert(@Field("Name") String name);

您仍然会得到 onResponseonFailure,但它不会尝试将流反序列化为对象。

你可以完全避开响应体。 在 beta2 中,您可以 Call<Void> 丢弃响应主体,只获取 http 状态代码。

@POST("persons/insert.php")
Call<Void> insert(@Field("Name") String name);