@Override public void sendRequest(final WXRequest request, final OnHttpListener listener) { if (listener != null) { listener.onHttpStart(); } execute( new Runnable() { @Override public void run() { WXResponse response = new WXResponse(); try { HttpURLConnection connection = openConnection(request, listener); Map<String, List<String>> headers = connection.getHeaderFields(); int responseCode = connection.getResponseCode(); if (listener != null) { listener.onHeadersReceived(responseCode, headers); } response.statusCode = String.valueOf(responseCode); if (responseCode >= 200 && responseCode <= 299) { response.originalData = readInputStreamAsBytes(connection.getInputStream(), listener); } else { response.errorMsg = readInputStream(connection.getErrorStream(), listener); } if (listener != null) { listener.onHttpFinish(response); } } catch (IOException e) { e.printStackTrace(); response.statusCode = "-1"; response.errorCode = "-1"; response.errorMsg = e.getMessage(); if (listener != null) { listener.onHttpFinish(response); } } } }); }