没有响应的改造2.0方法

Cil*_*nco 13 android retrofit

在我目前的android项目中,我正在使用新的Retrofit 2.0库向我的Web服务器发送一些数据.我只想在那里运行一个脚本,服务器不会返回任何内容.我以为我可以用这种方法做到这一点:

@POST("persons/insert.php")
Call<Void> insert(@Field("Name") String name);
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,onFailure虽然服务器返回200 ,但Retrofit会跳转到该方法.这是因为没有任何东西可以转换为Void.那我该怎么办呢?我希望onResponse如果服务器发回200并且onFailure发生错误,则调用该方法.我怎样才能做到这一点?

iag*_*een 33

你可以让它返回一个ResponseBody.

@POST("persons/insert.php")
Call<ResponseBody> insert(@Field("Name") String name);
Run Code Online (Sandbox Code Playgroud)

你仍然会得到onResponseonFailure,但不会尝试将流反序列化的对象.


Nik*_*ski 7

你可以完全避免响应体.在beta2中,您可以Call<Void>放弃响应正文并获取http状态代码.

@POST("persons/insert.php")
Call<Void> insert(@Field("Name") String name);
Run Code Online (Sandbox Code Playgroud)