You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Simon Kitching (JIRA)" <ji...@apache.org> on 2008/02/03 21:33:08 UTC

[jira] Reopened: (VFS-194) Redirect of HTTP url using the header location

     [ https://issues.apache.org/jira/browse/VFS-194?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Simon Kitching reopened VFS-194:
--------------------------------


Yves, the "fixed" and "resolved" status for an issue is only meant to be set by developers after they have actually changed the code in svn.

When you attach a patch to an issue, you just leave it as "open".

> Redirect of HTTP url using the header location
> ----------------------------------------------
>
>                 Key: VFS-194
>                 URL: https://issues.apache.org/jira/browse/VFS-194
>             Project: Commons VFS
>          Issue Type: Wish
>         Environment: Windows XP/Linux/FreeBSD
>            Reporter: Yves Zoundi
>         Attachments: svn.diff
>
>
> 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());
>         }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.