因此,我正在使用Retrofit 2创建所有API调用。
这是我的项目中的一些示例代码。首先是Api。
public class Api {
public static final String BASE_URL = "http://www.api.com/";
public static final String kApiUserLogin = "user/login/";
public static final String kApiUserRegister = "user/register/";
private static ApiInterface sService;
public static ApiInterface client() {
if (sService == null) {
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.create();
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
sService = retrofit.create(ApiInterface.class);
}
return sService;
}
public interface ApiInterface {
@POST(kApiUserLogin)
Call<UserResponse> loginUser(@Body UserDTO userDTO);
@POST(kApiUserRegister)
Call<UserResponse> registerUser(@Body UserDTO userDTO);
}}
}
然后这就是我的用法:
Call<UserResponse> call = Api.client().registerUser(user);
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Response<UserResponse> response) {
UserResponse userResponse = response.body();
if (userResponse.getError() == null) {
UserDTO userDto = userResponse.getUser();
User.getInstance().setUserDTO(userDto);
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
} else {
dialog
.setTitleText("Error")
.setContentText(userResponse.getError())
.setConfirmText("OK")
.changeAlertType(SweetAlertDialog.ERROR_TYPE);
}
}
@Override
public void onFailure(Throwable t) {
Log.d("CallBack", " Throwable is " + t);
dialog.hide();
}
});
Call<UserResponse> call = Api.client().loginUser(user);
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Response<UserResponse> response) {
UserResponse userResponse = response.body();
if (userResponse.getError() == null) {
UserDTO userDto = userResponse.getUser();
User.getInstance().setUserDTO(userDto);
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
} else {
dialog
.setTitleText("Error")
.setContentText(userResponse.getError())
.setConfirmText("OK")
.changeAlertType(SweetAlertDialog.ERROR_TYPE);
}
}
@Override
public void onFailure(Throwable t) {
Log.d("CallBack", " Throwable is " + t);
dialog.hide();
}
});
}
现在的问题是,我如何才能做到这一点,以便可以else
在if (userResponse.getError() == null)
内部的部分重用一段代码onReponse
?没关系,这只是一个例子。整个应用程序中有许多api调用,所以这不像我只能在这2个方法下创建一个方法来调用。
我一直在寻找默认的onResponse处理程序或Api类中的类似内容??
同时,我onFailure
当然想做同样的事情。
也许我过于复杂了一些简单的事情……
如果我理解正确,那就足够了。
Call<UserResponse> call = Api.client().registerUser(user);
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Response<UserResponse> response) {
processResponse(response.body());
}
@Override
public void onFailure(Throwable t) {
Log.d("CallBack", " Throwable is " + t);
dialog.hide();
}
});
Call<UserResponse> call = Api.client().loginUser(user);
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Response<UserResponse> response) {
processResponse(response.body());
}
@Override
public void onFailure(Throwable t) {
Log.d("CallBack", " Throwable is " + t);
dialog.hide();
}
});
}
private void processResponse(UserResponse userResponse) {
if (userResponse.getError() == null) {
UserDTO userDto = userResponse.getUser();
User.getInstance().setUserDTO(userDto);
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
} else {
dialog
.setTitleText("Error")
.setContentText(userResponse.getError())
.setConfirmText("OK")
.changeAlertType(SweetAlertDialog.ERROR_TYPE);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句