mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			183 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Java
		
	
	
	
| // HttpURLConnection.java - Subclass of communications links using
 | |
| //			Hypertext Transfer Protocol.
 | |
| 
 | |
| /* Copyright (C) 1999, 2000  Free Software Foundation
 | |
| 
 | |
|    This file is part of libgcj.
 | |
| 
 | |
| This software is copyrighted work licensed under the terms of the
 | |
| Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | |
| details.  */
 | |
| 
 | |
| package java.net;
 | |
| 
 | |
| import java.io.*;
 | |
| 
 | |
| /**
 | |
|  * @author Warren Levy <warrenl@cygnus.com>
 | |
|  * @date March 29, 1999.
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Written using on-line Java Platform 1.2 API Specification, as well
 | |
|  * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
 | |
|  * Status:  Believed complete and correct.
 | |
|  */
 | |
| 
 | |
| public abstract class HttpURLConnection extends URLConnection
 | |
| {
 | |
|   /* HTTP Success Response Codes */
 | |
|   public static final int HTTP_OK		= 200;
 | |
|   public static final int HTTP_CREATED		= 201;
 | |
|   public static final int HTTP_ACCEPTED 	= 202;
 | |
|   public static final int HTTP_NOT_AUTHORITATIVE = 203;
 | |
|   public static final int HTTP_NO_CONTENT	= 204;
 | |
|   public static final int HTTP_RESET		= 205;
 | |
|   public static final int HTTP_PARTIAL		= 206;
 | |
| 
 | |
|   /* HTTP Redirection Response Codes */
 | |
|   public static final int HTTP_MULT_CHOICE	= 300;
 | |
|   public static final int HTTP_MOVED_PERM	= 301;
 | |
|   public static final int HTTP_MOVED_TEMP	= 302;
 | |
|   public static final int HTTP_SEE_OTHER	= 303;
 | |
|   public static final int HTTP_NOT_MODIFIED	= 304;
 | |
|   public static final int HTTP_USE_PROXY	= 305;
 | |
| 
 | |
|   /* HTTP Client Error Response Codes */
 | |
|   public static final int HTTP_BAD_REQUEST	= 400;
 | |
|   public static final int HTTP_UNAUTHORIZED	= 401;
 | |
|   public static final int HTTP_PAYMENT_REQUIRED	= 402;
 | |
|   public static final int HTTP_FORBIDDEN	= 403;
 | |
|   public static final int HTTP_NOT_FOUND	= 404;
 | |
|   public static final int HTTP_BAD_METHOD	= 405;
 | |
|   public static final int HTTP_NOT_ACCEPTABLE	= 406;
 | |
|   public static final int HTTP_PROXY_AUTH	= 407;
 | |
|   public static final int HTTP_CLIENT_TIMEOUT	= 408;
 | |
|   public static final int HTTP_CONFLICT		= 409;
 | |
|   public static final int HTTP_GONE		= 410;
 | |
|   public static final int HTTP_LENGTH_REQUIRED	= 411;
 | |
|   public static final int HTTP_PRECON_FAILED	= 412;
 | |
|   public static final int HTTP_ENTITY_TOO_LARGE	= 413;
 | |
|   public static final int HTTP_REQ_TOO_LONG	= 414;
 | |
|   public static final int HTTP_UNSUPPORTED_TYPE	= 415;
 | |
| 
 | |
|   /* HTTP Server Error Response Codes */
 | |
|   public static final int HTTP_SERVER_ERROR	= 500;
 | |
|   public static final int HTTP_INTERNAL_ERROR	= 501;
 | |
|   public static final int HTTP_BAD_GATEWAY	= 502;
 | |
|   public static final int HTTP_UNAVAILABLE	= 503;
 | |
|   public static final int HTTP_GATEWAY_TIMEOUT	= 504;
 | |
|   public static final int HTTP_VERSION		= 505;
 | |
| 
 | |
|   static boolean followRedirects = true;
 | |
| 
 | |
|   protected String method = "GET";
 | |
|   protected int responseCode = -1;
 | |
|   protected String responseMessage;
 | |
|   protected boolean instanceFollowRedirects = followRedirects;
 | |
| 
 | |
|   private boolean gotResponseVals = false;
 | |
| 
 | |
|   protected HttpURLConnection(URL url)
 | |
|   {
 | |
|     super(url);
 | |
|   }
 | |
| 
 | |
|   public abstract void disconnect();
 | |
| 
 | |
|   public abstract boolean usingProxy();
 | |
| 
 | |
|   public static void setFollowRedirects(boolean set)
 | |
|   {
 | |
|     // Throw an exception if an extant security mgr precludes
 | |
|     // setting the factory.
 | |
|     SecurityManager s = System.getSecurityManager();
 | |
|     if (s != null)
 | |
|       s.checkSetFactory();
 | |
| 
 | |
|     followRedirects = set;
 | |
|   }
 | |
| 
 | |
|   public static boolean getFollowRedirects()
 | |
|   {
 | |
|     return followRedirects;
 | |
|   }
 | |
| 
 | |
|   public void setRequestMethod(String method) throws ProtocolException
 | |
|   {
 | |
|     if (connected)
 | |
|       throw new ProtocolException("Already connected");
 | |
| 
 | |
|     if (method.equals("GET") || method.equals("POST") ||
 | |
| 	method.equals("HEAD") || method.equals("OPTIONS") ||
 | |
| 	method.equals("PUT") || method.equals("DELETE") ||
 | |
| 	method.equals("TRACE"))
 | |
|       this.method = method;
 | |
|     else
 | |
|       throw new ProtocolException("Invalid HTTP request method");
 | |
|   }
 | |
| 
 | |
|   public String getRequestMethod()
 | |
|   {
 | |
|     return method;
 | |
|   }
 | |
| 
 | |
|   public int getResponseCode() throws IOException
 | |
|   {
 | |
|     if (!gotResponseVals)
 | |
|       getResponseVals();
 | |
|     return responseCode;
 | |
|   }
 | |
| 
 | |
|   public String getResponseMessage() throws IOException
 | |
|   {
 | |
|     if (!gotResponseVals)
 | |
|       getResponseVals();
 | |
|     return responseMessage;
 | |
|   }
 | |
| 
 | |
|   private void getResponseVals() throws IOException
 | |
|   {
 | |
|     // getHeaderField() will connect for us, but do it here first in
 | |
|     // order to pick up IOExceptions.
 | |
|     if (!connected)
 | |
|       connect();
 | |
|       
 | |
|     gotResponseVals = true;
 | |
|     // Response is the first header received from the connection.
 | |
|     String respField = getHeaderField(0);
 | |
|     
 | |
|     if (respField == null || ! respField.startsWith("HTTP/"))
 | |
|       {
 | |
| 	// Set to default values on failure.
 | |
|         responseCode = -1;
 | |
| 	responseMessage = null;
 | |
| 	return;
 | |
|       }
 | |
| 
 | |
|     int firstSpc, nextSpc;
 | |
|     firstSpc = respField.indexOf(' ');
 | |
|     nextSpc = respField.indexOf(' ', firstSpc + 1);
 | |
|     responseMessage = respField.substring(nextSpc + 1);
 | |
|     String codeStr = respField.substring(firstSpc + 1, nextSpc);
 | |
|     try
 | |
|       {
 | |
| 	responseCode = Integer.parseInt(codeStr);
 | |
|       }
 | |
|     catch (NumberFormatException e)
 | |
|       {
 | |
| 	// Set to default values on failure.
 | |
|         responseCode = -1;
 | |
| 	responseMessage = null;
 | |
|       }
 | |
|   }
 | |
| 
 | |
|   // TODO12: public Permission getPermission() throws IOException
 | |
|   // {
 | |
|   // }
 | |
| 
 | |
|   // TODO12: public InputStream getErrorStream()
 | |
|   // {
 | |
|   // }
 | |
| }
 |