retrofit - 服务方法不能返回 void。改造

标签 retrofit

这是我在接口(interface)中的方法。我正在调用此函数,但应用程序因以下异常而崩溃:

Caused by: java.lang.IllegalArgumentException: Service methods cannot return void. for method RestInterface.getOtp

//post method to get otp for login
@FormUrlEncoded
@POST("/store_login")
void getOtp(@Header("YOUR_APIKEY") String apikey, @Header("YOUR_VERSION") String appversion,
            @Header("YOUR_VERSION") String confiver, @Field("mobile") String number, Callback<Model> cb);

这是我调用该函数的代码

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)
            .build();

    RestInterface restApi = retrofit.create(RestInterface.class);
    restApi.getOtp("andapikey", "1.0", "1.0", "45545845454", new Callback<Model>() {

        @Override
        public void onResponse(Response<Model> response) {

        }

        @Override
        public void onFailure(Throwable t) {

        }
    });

最佳答案

Retrofit 1.9 和 2.0 中异步有区别

/* Retrofit 1.9 中同步 */

public interface APIService {

@POST("/list")
Repo loadRepo();

}

/* Retrofit 1.9 中的异步 */

public interface APIService {

@POST("/list")
void loadRepo(Callback<Repo> cb);

}

但在 Retrofit 2.0 上,它要简单得多,因为您只需使用一个模式即可声明

/* Retrofit 2.0 */

public interface APIService {

@POST("/list")
Call<Repo> loadRepo();

}

//Retrofit 2.0中的同步调用

Call<Repo> call = service.loadRepo();
Repo repo = call.execute();

//Retrofit 2.0中的异步调用

Call<Repo> call = service.loadRepo();
call.enqueue(new Callback<Repo>() {
@Override
public void onResponse(Response<Repo> response) {

   Log.d("CallBack", " response is " + response);
}

@Override
public void onFailure(Throwable t) {

  Log.d("CallBack", " Throwable is " +t);
}
});

关于retrofit - 服务方法不能返回 void。改造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311531/

相关文章:

android - JSON 解析与改造

java - 使用 gson 反序列化 JSON 响应时遇到问题

android - 如果模型的属性是私有(private)的,则 Retrofit Android 无法将 JSON 响应转换为模型

java - 使用 RxJava/RxAndroid 依次执行不同类型的 Observable

添加从异步改造调用获得的项目后,Android RecyclerView 仅包含一个项目

android - 改造默认线程

android - 改造 "IllegalStateException: Already executed"

java - 将 Java 对象传递到 Retrofit 中未正确处理

java - 我在 Android Studio 中使用 Wea​​therstack API 在 Retrofit 中得到空值

android - 改造文件上传,对象在服务器端为空