- From: Mark Friedman <mark@intraspect.com>
- Date: Tue, 27 May 1997 14:03:27 -0700
- To: "Joseph M. Futrelle" <futrelle@ncsa.uiuc.edu>
- CC: www-jigsaw@w3.org
- Message-ID: <338B4C1E.710E7F8@intraspect.com>
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