ZLNetworkRequest createNetworkData(String url, final OPDSCatalogItem.State result) {
    if (url == null) {
      return null;
    }
    final NetworkLibrary library = NetworkLibrary.Instance();
    final NetworkCatalogItem catalogItem = result.Loader.getTree().Item;
    library.startLoading(catalogItem);
    url = rewriteUrl(url, false);
    return new ZLNetworkRequest(url) {
      @Override
      public void handleStream(InputStream inputStream, int length)
          throws IOException, ZLNetworkException {
        if (result.Loader.confirmInterruption()) {
          return;
        }

        new OPDSXMLReader(new OPDSFeedHandler(getURL(), result), false).read(inputStream);

        if (result.Loader.confirmInterruption() && result.LastLoadedId != null) {
          // reset state to load current page from the beginning
          result.LastLoadedId = null;
        } else {
          result.Loader.getTree().confirmAllItems();
        }
      }

      @Override
      public void doAfter(boolean success) {
        library.stopLoading(catalogItem);
      }
    };
  }