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

Joseph,

Thanks. I tried method 1 and it works fine. Do you have any idea why the
-Djava.handler.protol.pkgs=w3c.www.protocol approach didn't work?

Also, how does Jigsaw set the appropriate HTTP protocol handler? I can't
find any references in the Jigsaw source (alpha5) to either
setURLStreamHandlerFactory() or java.handler.protol.pkgs. What's going
on?

-Mark

Joseph M. Futrelle wrote:

> 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 17:04:14 UTC