/** * Perform an analyze of a given HttpResponse object's response-code in order to interpret whether * the requests to Twitter API went well. Otherwise, an exception is thrown describing the * problem. * * @param response HttpResponse object to be interpreted. * @throws IOException If an I/O or service error occurs. * @throws LimitExceededException If a request limit exceeded error occurs. * @throws InvalidQueryException If an invalid query error occurs. * @throws SecurityException If a security error occurs. * @throws IllegalArgumentException If response is null. */ public static void perform(HttpResponse response) throws IOException, LimitExceededException { if (response == null) { throw new IllegalArgumentException("Response must not be null."); } // final int respCode = response.getCode(); // if (respCode != HttpConnection.HTTP_OK && respCode != HttpConnection.HTTP_NOT_MODIFIED) { if (isInvalidQueryError(respCode)) { throw new InvalidQueryException(getErrorMessage(response)); } else if (isLimitExceededError(respCode)) { String emgs = getErrorMessage(response); String raft = response.getResponseField("X-Rate-Limit-Reset"); // if (!StringUtil.isEmpty(raft)) { emgs += " / Retry after " + raft + " secs."; } // throw new LimitExceededException(emgs); } else if (isSecurityError(respCode)) { throw new SecurityException(getErrorMessage(response)); } else { throw new IOException(getErrorMessage(response)); } } }
/** * Get error messages from connection's response. * * @param response Http response. * @return Message. * @throws IOException If any I/O error occurs. */ public static String getErrorMessage(HttpResponse response) throws IOException { String errorMsg = null; // Parser parser = ParserFactory.getParser(ParserFactory.JSON); HttpResponseCodeErrorJSONHandler handler = new HttpResponseCodeErrorJSONHandler(); // try { parser.parse(response.getStream(), handler); // errorMsg = handler.getMessage(); } catch (Exception e) { errorMsg = "HTTP ERROR CODE: " + response.getCode(); } // return errorMsg; }