- 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