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);
您仍然会得到 onResponse
和 onFailure
,但它不会尝试将流反序列化为对象。
你可以完全避开响应体。
在 beta2 中,您可以 Call<Void>
丢弃响应主体,只获取 http 状态代码。
@POST("persons/insert.php")
Call<Void> insert(@Field("Name") String name);
在我当前的 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);
您仍然会得到 onResponse
和 onFailure
,但它不会尝试将流反序列化为对象。
你可以完全避开响应体。
在 beta2 中,您可以 Call<Void>
丢弃响应主体,只获取 http 状态代码。
@POST("persons/insert.php")
Call<Void> insert(@Field("Name") String name);