Uploaded image for project: 'Commons VFS'
  1. Commons VFS
  2. VFS-194

Redirect of HTTP url using the header location

    XMLWordPrintableJSON

Details

    • Wish
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • None
    • 2.1
    • None
    • Windows XP/Linux/FreeBSD

    Description

      The http provider classes don't test the header location before resolving a file. If the redirection is reported as invalid by commons-httpclient, then the HttpFileObject is not resolved. Here is how to fix it in all the http provider implementation classes.

      int status = 0;//client.executeMethod(method);
      try

      { status = client.executeMethod(method); System.out.println("method executed"); }

      catch(Exception e){
      System.out.println("Exception co");
      try{
      HostConfiguration config = client.getHostConfiguration();
      Header header = method.getResponseHeader("Location");
      System.out.println("Checking header");
      if (header != null)

      { String redirectUrl = header.getValue(); config.setHost(new java.net.URL(redirectUrl).getHost(), config.getPort(), config.getProtocol()); client.setHostConfiguration(config); status = client.executeMethod(method); }


      }
      catch(Exception err)

      { throw new Exception(err); }

      }
      if ((status >= 300) && (status < 400)) {
      try{
      HostConfiguration config = client.getHostConfiguration();
      Header header = method.getResponseHeader("Location");
      if (header != null) { String redirectUrl = header.getValue(); method = new HeadMethod(); setupMethod(method); config.setHost(new java.net.URL(redirectUrl).getHost(), config.getPort(), config.getProtocol()); client.setHostConfiguration(config); status = client.executeMethod(method); }
      }
      catch(Exception err){ throw new Exception(err); }

      }
      method.releaseConnection();
      if (status == HttpURLConnection.HTTP_OK)

      { return FileType.FILE; }

      else if (status == HttpURLConnection.HTTP_NOT_FOUND

      status == HttpURLConnection.HTTP_GONE) { return FileType.IMAGINARY; }

      else

      { throw new FileSystemException("vfs.provider.http/head.error", getName()); }

      Attachments

        1. svn.diff
          8 kB
          Yves Zoundi

        Issue Links

          Activity

            People

              Unassigned Unassigned
              mrcheeks Yves Zoundi
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: