Re: HttpURLConnection [was Re: Handling of redirections (fwd)]

Method 1: make a URLStreamHandlerFactory that returns
w3c.www.protocol.http.Handlers, and make it the global URLStreamHandlerFactory,
like so:

 class myURLStreamHandlerFactory implements URLStreamHandlerFactory {
   public URLStreamHandler createURLStreamHandler (String protocol) {
     if (protocol.equalsIgnoreCase("http")) {
       return new w3c.www.protocol.http.Handler();
     } else return null;
   }
 }

 ...

 URL.setURLStreamHandlerFactory (new myURLStreamHandlerFactory());
 w3c.www.protocol.http.HttpURLConnection c =
  (w3c.www.protocol.http.HttpURLConnection) someURL.openConnection();

unfortunately you can't get the reply status using this method. But you
can get it from an ordinary java.net.HttpURLConnection with getResponseCode().

Method 2: Alternately, you can use the w3c client library like this:

    HttpManager     manager = HttpManager.getManager() ;
    Request request = manager.createRequest() ;
    request.setMethod("GET");
    request.setURL("http://foo.bar/baz");
    Reply    reply = manager.runRequest(request) ;
    System.out.println (reply.getStatus());

Hopefully this all makes sense ...

> I have a problem and a question. First the problem. I get a
> ClassCastException on the second line of the following fragment:
> 
>       URL url = new URL (args[0]);
>       w3c.www.protocol.http.HttpURLConnection c =
>          (w3c.www.protocol.http.HttpURLConnection) url.openConnection();
> 
> when run with the following command line:
> 
>   e:\jdk1.1.1\bin\java  -classpath
> 
> .;c:\jigsaw-alpha5\jigsaw\classes\jigsaw.zip;e:\jdk1.1.1\lib\classes.zip
> 
>       -Djava.handler.protol.pkgs=w3c.www.protocol httpURLTest
>       http://www.microsoft.com
> 
> where httpURLTest is shown at the end of this message.
> 
> My question is: How do you get the status code of an HttpURLConnection
> or a URLconnection?
> 
> Thanks in advance.
> 
> -Mark
> 
> ------------ httpURLTest.java -----------
> 
> import java.util.*;
> import java.net.*;
> import java.io.*; // FIXME - DEBUG
> 
> import w3c.www.protocol.http.*;
> import w3c.www.mime.*;
> import w3c.util.*;
> 
> public class httpURLTest {
> 
>   public static void main(String args[]) {
>     try {
>       URL url = new URL (args[0]);
>       w3c.www.protocol.http.HttpURLConnection c =
> (w3c.www.protocol.http.HttpURLConnection) url.openConnection();
>       // Display some infos:
>       System.out.println("last-modified: "+c.getLastModified());
>       System.out.println("length       : "+c.getContentLength());
> //       System.out.println("status       : "+c.getStatus());
>       System.out.println("location       :
> "+c.getHeaderField("location"));
>       // Display the returned body:
>       InputStream in = c.getInputStream();
>       byte buf[] = new byte[4096];
>       int  cnt   = 0;
>       while ((cnt = in.read(buf)) > 0)
>          System.out.print(new String(buf, 0, 0, cnt));
>       System.out.println("-");
>       in.close();
>  } catch (Exception ex) {
>       ex.printStackTrace();
>  }
>  System.exit(1);
>   }
> }
> 
> 


-- 
Joe Futrelle
Developer, Joule/Jigsaw Java/HTTP
National Center for Supercomputing Applications
futrelle@ncsa.uiuc.edu
(217) 265-0296

Received on Tuesday, 27 May 1997 15:57:58 UTC