private void register(final boolean legacy) { try { if (legacy) { collectorRegistrationService.legacyRegister(this.collectorId, this.collectorRegistrationRequest); } else { collectorRegistrationService.register(this.collectorId, this.collectorRegistrationRequest); } } catch (RetrofitError e) { final Response response = e.getResponse(); if (response != null) { if (!legacy && response.getStatus() == 404) { // Try again with the Graylog 1.x URL if we didn't try yet. register(true); } else { LOG.warn("Unable to send heartbeat to Graylog server, result was: {} - {}", response.getStatus(), response.getReason()); } } else { final String message; if (e.getCause() != null) { message = e.getCause().getClass().getSimpleName() + ": " + e.getCause().getMessage(); } else { message = e.getClass().getSimpleName() + ": " + e.getMessage(); } LOG.warn("Unable to send heartbeat to Graylog server: {}", message); } } }
public static boolean retry(Activity act, RetrofitError error, AtomicInteger retries, String uploadErrorMsg){ // this is the first half of the retry check Response r = error.getResponse(); if (r != null && r.getStatus() == STATUS_CODE_RETRY){ Log.v(TAG, "STATUS_CODE_RETRY!"); ... return true; } // this is the second half of the retry check if (error.isNetworkError()) { if (error.getCause() instanceof SocketTimeoutException) {//connection timeout check if(retries.incrementAndGet() < NUM_RETRIES){ // retry if you can return true; } else { // if you can't retry anymore retries.set(0); Log.i(TAG, act.getClass().getSimpleName() + " has no more retries " + act.getString(R.string.timeout_msg)); return false; } } else {//no connection check retries.set(0); Log.i(TAG, act.getClass().getSimpleName() + " " + act.getString(R.string.timeout_msg)+ " " + uploadErrorMsg); return false; } } else { //non network error check retries.set(0); Log.i(TAG, act.getClass().getSimpleName() + " " + act.getString(R.string.err_msg)+ " " + uploadErrorMsg); return false; } }
@Override public void failure(RetrofitError error) { setProgressBarIndeterminateVisibility(false); if (error.getResponse() == null) { showDialog(error.getCause().getMessage()); } else { showDialog("Unable to get a client token. Response Code: " + error.getResponse().getStatus() + " Response body: " + error.getResponse().getBody()); } } });
@Override public Throwable handleError(RetrofitError error) { retrofit.client.Response r = error.getResponse(); if (r != null && r.getStatus() == 401) { Log.e("ErrorHandler", "---------> access deny code=401"); return new AccessDenyException(error.getMessage()); } else if (error.getKind() == RetrofitError.Kind.NETWORK) { Log.e("ErrorHandler", "---------> An IOException occurred while communicating to the server"); //return new NetworkException(cause.getMessage()); } else if (error.getKind() == RetrofitError.Kind.HTTP) { Log.e("ErrorHandler", "---------> A non-200 HTTP status code was received from the server"); //return new Non200HttpException(cause.getMessage()); } else if (error.getKind() == RetrofitError.Kind.CONVERSION) { Log.e("ErrorHandler", "---------> An exception was thrown while (de)serializing a body"); return new ConversionException(error.getMessage()); } else if (error.getKind() == RetrofitError.Kind.UNEXPECTED) { Log.e("ErrorHandler", "---------> An internal error occurred while attempting to execute a request. " + "It is best practice to re-throw this exception so your application crashes."); return new UnKnowException(error.getMessage()); } return error.getCause(); } }
@Override public Throwable handleError(RetrofitError error) { retrofit.client.Response r = error.getResponse(); if (r != null && r.getStatus() == 401) { Log.e("ErrorHandler", "---------> access deny code=401"); return new AccessDenyException(error.getMessage()); } else if (error.getKind() == RetrofitError.Kind.NETWORK) { Log.e("ErrorHandler", "---------> An IOException occurred while communicating to the server"); return new NetworkException(error.getMessage()); } else if (error.getKind() == RetrofitError.Kind.HTTP) { Log.e("ErrorHandler", "---------> A non-200 HTTP status code was received from the server"); //return new Non200HttpException(cause.getMessage()); } else if (error.getKind() == RetrofitError.Kind.CONVERSION) { Log.e("ErrorHandler", "---------> An exception was thrown while (de)serializing a body"); return new ConversionException(error.getMessage()); } else if (error.getKind() == RetrofitError.Kind.UNEXPECTED) { Log.e("ErrorHandler", "---------> An internal error occurred while attempting to execute a request. " + "It is best practice to re-throw this exception so your application crashes."); return new UnKnowException(error.getMessage()); } return error.getCause(); } }