private Response getResponseFromHttpClient(Request request) {
    Response response = new Response();
    BufferedReader reader = null;

    int cTimeout = mPrefs.getConnectionTimeout();
    int rTimeout = mPrefs.getReadTimeout();
    String userAgent = mPrefs.getUserAgent();

    try {
      HttpParams params = getHttpParams();
      ClientConnectionManager ccm = getClientConnectionManager(params);
      HttpClient client = new DefaultHttpClient(ccm, params);

      HttpGet get = new HttpGet(request.getUrl());
      HttpConnectionParams.setConnectionTimeout(client.getParams(), cTimeout * 1000);
      HttpConnectionParams.setSoTimeout(client.getParams(), rTimeout * 1000);
      if (userAgent != null && userAgent.length() != 0) {
        get.setHeader("User-Agent", userAgent);
      }

      CodeTimer timer = new CodeTimer();
      HttpResponse res = client.execute(get);

      StatusLine sl = res.getStatusLine();
      int responseCode = sl.getStatusCode();
      response.setResponseCode(responseCode);

      response.setAlive(true);

      InputStream is = res.getEntity().getContent();
      String body = readResponseBody(is);
      response.setResponseTime(timer.getElapsed());
      response.setContent(body.toString());

      response.setHeaderFields(res.getAllHeaders());
    } catch (Throwable t) {
      response.setThrowable(t);
    } finally {
      try {
        if (reader != null) {
          reader.close();
        }
      } catch (IOException ioe) {
      }
    }

    return response;
  }
  private Response getResponseFromURLConnection(Request request) {
    Response response = new Response();
    InputStream is = null;

    int cTimeout = mPrefs.getConnectionTimeout();
    int rTimeout = mPrefs.getReadTimeout();
    String userAgent = mPrefs.getUserAgent();
    HttpURLConnection uc = null;

    try {
      URL u = new URL(request.getUrl());
      uc = (HttpURLConnection) u.openConnection();

      if (userAgent != null && userAgent.length() != 0) {
        uc.setRequestProperty("User-Agent", userAgent);
      }
      uc.setConnectTimeout(cTimeout * 1000);
      uc.setReadTimeout(rTimeout * 1000);
      uc.setUseCaches(false);
      uc.connect();

      int responseCode = uc.getResponseCode();
      response.setResponseCode(responseCode);
      response.setAlive(true);
      CodeTimer timer = new CodeTimer();
      is = uc.getInputStream();
      response.setContent(readResponseBody(is));
      response.setResponseTime(timer.getElapsed());
      response.setHeaderFields(uc.getHeaderFields());
    } catch (Throwable t) {
      response.setThrowable(t);
    } finally {
      try {
        if (is != null) {
          is.close();
        }
      } catch (IOException ioe) {
      }
      if (uc != null) {
        uc.disconnect();
      }
    }
    return response;
  }