@Override
  public ServerResponse httpGET(final String urlStr, final List<HeaderEntry> headers) {
    try {
      final URL url = new URL(urlStr);
      Log.d(TAG, "Downloading from: " + url);

      final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
      connection.setRequestMethod("GET");
      connection.connect();

      final ServerResponse response = new ServerResponse();
      response.setResponseStatus(connection.getResponseCode());

      if (response.getResponseStatus() == 200) {
        final BufferedReader reader =
            new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
        final StringBuilder sb = new StringBuilder();

        if (!this.elemhideEnabled && isListedSubscriptionUrl(url)) {
          Log.d(TAG, "Removing element hiding rules from: '" + url + "'");

          String line;
          while ((line = reader.readLine()) != null) {
            // We're only appending non-element-hiding filters here.
            //
            // See:
            //      https://issues.adblockplus.org/ticket/303
            //
            // Follow-up issue for removing this hack:
            //      https://issues.adblockplus.org/ticket/1541
            //
            if (line.indexOf('#') == -1) {
              sb.append(line);
              sb.append('\n');
            }
          }
        } else {
          int character;

          while ((character = reader.read()) != -1) {
            sb.append((char) character);
          }
        }

        connection.disconnect();

        response.setStatus(NsStatus.OK);
        response.setResponse(sb.toString());
      } else {
        response.setStatus(NsStatus.ERROR_FAILURE);
      }
      return response;
    } catch (final Throwable t) {
      throw new AdblockPlusException("WebRequest failed", t);
    }
  }