So, I already get a token from Json when the login is done without problems and gets a hash
But when the response from the server is an error, I can not get the Json message ({message: "Error: invalid letter"), because in onError we get only the Throwable argument, and not the model class, for example, in
how can i get json message from onError server ??
final Observable<TokenResponse> observable = Service.login(userCredentials); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<TokenResponse>() { String error=""; @Override public void onCompleted() { mLoginView.whenLoginSucess(); } @Override public void onError(Throwable e) { if (e instanceof HttpException) { HttpException exception = (HttpException) e; Response response = exception.response(); Converter<ResponseBody, ErrorFromServer> converter = new GsonConverterFactory() .responseBodyConverter(ErrorFromServer.class, Annotation[0]); ErrorFromServer error = converter.convert(response.errorBody()); } mLoginView.errorText(error); e.printStackTrace(); } @Override public void onNext(TokenResponse tokenResponse) { SharedPreferences.Editor editor = sharedP.edit(); editor.putString("hash", tokenResponse.getToken()); editor.commit();
TokenResponse Code
public class TokenResponse { @SerializedName("hash") @Expose private String token; @SerializedName("message") @Expose private String message; public String getMessage() {return message;} public String getToken() { return token; }
}
json android retrofit rx-java error-handling
Diogo rosa
source share