home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 14 / CDACTUAL.iso / ie4 / IE4 / JAVI386.CAB / classr.exe / sun / net / www / http / HttpClient.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-01-31  |  7.8 KB  |  349 lines

  1. package sun.net.www.http;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.DataInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. import java.net.InetAddress;
  10. import java.net.SocketException;
  11. import java.net.URL;
  12. import java.net.UnknownHostException;
  13. import java.util.StringTokenizer;
  14. import sun.net.NetworkClient;
  15. import sun.net.TelnetInputStream;
  16. import sun.net.www.MessageHeader;
  17.  
  18. public final class HttpClient extends NetworkClient {
  19.    static final boolean debug = false;
  20.    static final String userAgentString = "User-Agent: " + System.getProperty("http.agent", "Java" + System.getProperty("java.version")) + "\r\n";
  21.    static final String acceptString = "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n";
  22.    static final int httpPortNumber = 80;
  23.    public static boolean useProxyForFirewall = Boolean.getBoolean("firewallSet");
  24.    public static String firewallProxyHost = System.getProperty("firewallHost");
  25.    public static int firewallProxyPort = Integer.getInteger("firewallPort", 80);
  26.    public static boolean useProxyForCaching = Boolean.getBoolean("proxySet");
  27.    public static String cachingProxyHost = System.getProperty("proxyHost", "sunweb.ebay");
  28.    public static int cachingProxyPort = Integer.getInteger("proxyPort", 80);
  29.    private String proxy;
  30.    private int proxyPort;
  31.    // $FF: renamed from: OK int
  32.    public static final int field_0 = 200;
  33.    public static final int CREATED = 201;
  34.    public static final int ACCEPTED = 202;
  35.    public static final int PARTIAL = 203;
  36.    public static final int MOVED = 301;
  37.    public static final int FOUND = 302;
  38.    public static final int METHOD = 303;
  39.    public static final int BAD = 400;
  40.    public static final int UNAUTHORIZED = 401;
  41.    public static final int PAYMENT_REQUIRED = 402;
  42.    public static final int FORBIDDEN = 403;
  43.    public static final int NOT_FOUND = 404;
  44.    public static final int INTERNAL_ERROR = 500;
  45.    public static final int NOT_IMPLEMENTED = 501;
  46.    int status;
  47.    MessageHeader mimeHeader;
  48.    boolean usingProxy;
  49.    String host;
  50.    String authentication;
  51.    URL url;
  52.  
  53.    public synchronized void openServer(String var1, int var2) throws UnauthorizedHttpRequestException, UnknownHostException, SocketException, IOException {
  54.       this.host = var1;
  55.       boolean var3 = false;
  56.       SecurityManager var4 = System.getSecurityManager();
  57.       if (var4 != null) {
  58.          var4.checkConnect(var1, var2);
  59.       }
  60.  
  61.       if (this.url.getProtocol().equals("http")) {
  62.          if (useProxyForCaching) {
  63.             super.openServer(cachingProxyHost, cachingProxyPort);
  64.             this.usingProxy = true;
  65.             return;
  66.          }
  67.  
  68.          try {
  69.             super.openServer(var1, var2);
  70.          } catch (UnknownHostException var6) {
  71.             if (!useProxyForFirewall) {
  72.                throw var6;
  73.             }
  74.  
  75.             if (this.proxy == null) {
  76.                super.openServer(firewallProxyHost, firewallProxyPort);
  77.             } else {
  78.                super.openServer(this.proxy, this.proxyPort);
  79.             }
  80.  
  81.             this.usingProxy = true;
  82.          } catch (SocketException var7) {
  83.             if (!useProxyForFirewall) {
  84.                throw var7;
  85.             }
  86.  
  87.             if (this.proxy == null) {
  88.                super.openServer(firewallProxyHost, firewallProxyPort);
  89.             } else {
  90.                super.openServer(this.proxy, this.proxyPort);
  91.             }
  92.  
  93.             this.usingProxy = true;
  94.          }
  95.       } else {
  96.          if (this.proxy == null) {
  97.             super.openServer(firewallProxyHost, firewallProxyPort);
  98.          } else {
  99.             super.openServer(this.proxy, this.proxyPort);
  100.          }
  101.  
  102.          this.usingProxy = true;
  103.       }
  104.  
  105.       var3 = true;
  106.    }
  107.  
  108.    protected void getRequestStatus(String var1, String var2) throws UnauthorizedHttpRequestException, FileNotFoundException {
  109.       if (var1.startsWith("HTTP/1.0 ")) {
  110.          this.status = Integer.parseInt(var1.substring(9, 12));
  111.       } else {
  112.          this.status = -1;
  113.       }
  114.  
  115.       switch (this.status) {
  116.          case 400:
  117.          case 402:
  118.          case 403:
  119.          case 404:
  120.          case 500:
  121.          case 501:
  122.             throw new FileNotFoundException(var1 + " -- " + var2);
  123.          case 401:
  124.             throw new UnauthorizedHttpRequestException(this.url, this);
  125.          default:
  126.       }
  127.    }
  128.  
  129.    public String getURLFile(URL var1) {
  130.       if (this.usingProxy) {
  131.          String var2 = var1.getProtocol() + "://" + var1.getHost();
  132.          if (var1.getPort() != -1) {
  133.             var2 = var2 + ":" + var1.getPort();
  134.          }
  135.  
  136.          return var2 + var1.getFile();
  137.       } else {
  138.          return var1.getFile();
  139.       }
  140.    }
  141.  
  142.    public void processRequest(String var1) throws UnauthorizedHttpRequestException, IOException {
  143.       BufferedInputStream var2 = (BufferedInputStream)super.serverInput;
  144.       String var3 = null;
  145.       String var4 = null;
  146.       var2.mark(200);
  147.       DataInputStream var5 = new DataInputStream(new TelnetInputStream(super.serverInput, false));
  148.  
  149.       while(true) {
  150.          String var6 = var5.readLine();
  151.          if (var4 == null) {
  152.             if (var6 == null) {
  153.                throw new SocketException("Unexpected EOF");
  154.             }
  155.  
  156.             var4 = new String(var6);
  157.          }
  158.  
  159.          if (var6 == null || var6.length() == 0) {
  160.             break;
  161.          }
  162.  
  163.          if (var6.startsWith("HTTP/1.0")) {
  164.             var3 = new String(var6);
  165.             if (!var4.startsWith("HTTP/1.0")) {
  166.                System.err.println("Warning: The first line from " + this.url + " was not HTTP/1.0 compliant.");
  167.                System.err.println("         '" + var4 + "'");
  168.             }
  169.             break;
  170.          }
  171.       }
  172.  
  173.       var2.reset();
  174.  
  175.       try {
  176.          if (var3 != null) {
  177.             try {
  178.                this.getRequestStatus(var3, var1);
  179.             } finally {
  180.                this.mimeHeader = new MessageHeader(super.serverInput);
  181.             }
  182.  
  183.             return;
  184.          }
  185.  
  186.          if (var4 == null || var4.length() == 0) {
  187.             throw new SocketException("Unexpected EOF");
  188.          }
  189.  
  190.          if (var4.indexOf("hostname unknown") != -1) {
  191.             throw new UnknownHostException(this.host);
  192.          }
  193.  
  194.          if (var4.indexOf("refused") != -1 || var4.startsWith("</BODY>")) {
  195.             throw new SocketException("Connection refused");
  196.          }
  197.       } catch (UnauthorizedHttpRequestException var15) {
  198.          throw var15;
  199.       } catch (Exception var16) {
  200.          String var7 = this.getHeaderField("content-length");
  201.          boolean var8 = false;
  202.          if (var7 == null || Integer.parseInt(var7) == 0) {
  203.             try {
  204.                this.closeServer();
  205.             } catch (Throwable var13) {
  206.             }
  207.  
  208.             throw var16 instanceof IOException ? (IOException)var16 : new IOException(((Throwable)var16).toString());
  209.          }
  210.       }
  211.  
  212.    }
  213.  
  214.    public void closeServer() {
  215.       if (this.url != null) {
  216.          this.url = null;
  217.       }
  218.  
  219.       try {
  220.          super.closeServer();
  221.       } catch (Throwable var1) {
  222.       }
  223.    }
  224.  
  225.    public MessageHeader getMimeHeader() {
  226.       return this.mimeHeader;
  227.    }
  228.  
  229.    public String getHeaderField(String var1) {
  230.       return this.mimeHeader != null ? this.mimeHeader.findValue(var1) : null;
  231.    }
  232.  
  233.    public int getStatus() {
  234.       return this.status;
  235.    }
  236.  
  237.    public InputStream getInputStream() {
  238.       return super.serverInput;
  239.    }
  240.  
  241.    public OutputStream getOutputStream() {
  242.       return super.serverOutput;
  243.    }
  244.  
  245.    public void setAuthentication(String var1) {
  246.       this.authentication = var1;
  247.    }
  248.  
  249.    public void setAuthentication(AuthenticationInfo var1) {
  250.       if (var1 == null) {
  251.          this.authentication = "";
  252.       } else {
  253.          this.authentication = var1.auth;
  254.       }
  255.    }
  256.  
  257.    public String getAuthentication() {
  258.       if (this.authentication == null) {
  259.          return "";
  260.       } else {
  261.          String var1 = "Authorization: " + this.authentication + "\r\n";
  262.          return var1;
  263.       }
  264.    }
  265.  
  266.    public String getAuthentication(URL var1) {
  267.       AuthenticationInfo var2 = AuthenticationInfo.getAuth(var1);
  268.       this.setAuthentication(var2);
  269.       return this.getAuthentication();
  270.    }
  271.  
  272.    public String getAuthenticationScheme() {
  273.       return this.getAuthenticationField(1);
  274.    }
  275.  
  276.    public String getAuthenticationRealm() {
  277.       return this.getAuthenticationField(3);
  278.    }
  279.  
  280.    public String getAuthenticationField(int var1) {
  281.       String var2 = this.getHeaderField("www-authenticate");
  282.       if (var2 == null) {
  283.          return null;
  284.       } else {
  285.          StringTokenizer var3 = new StringTokenizer(var2, " =\"");
  286.  
  287.          while(true) {
  288.             --var1;
  289.             if (var1 <= 0) {
  290.                return var3.hasMoreTokens() ? var3.nextToken() : null;
  291.             }
  292.  
  293.             var3.nextToken();
  294.          }
  295.       }
  296.    }
  297.  
  298.    public HttpClient(URL var1, String var2, String var3, int var4) throws UnauthorizedHttpRequestException, IOException {
  299.       this.proxyPort = -1;
  300.       this.usingProxy = false;
  301.       this.proxy = var3;
  302.       this.proxyPort = var4;
  303.       this.setAuthentication(var2);
  304.  
  305.       try {
  306.          InetAddress var5 = InetAddress.getByName(var1.getHost());
  307.          var1 = new URL(var1.getProtocol(), var5.getHostAddress(), var1.getPort(), var1.getFile());
  308.       } catch (UnknownHostException var6) {
  309.       }
  310.  
  311.       this.url = var1;
  312.       int var7 = var1.getPort();
  313.       if (var7 == -1) {
  314.          var7 = 80;
  315.       }
  316.  
  317.       this.openServer(var1.getHost(), var7);
  318.    }
  319.  
  320.    public HttpClient(URL var1, String var2, int var3) throws UnauthorizedHttpRequestException, IOException {
  321.       this.proxyPort = -1;
  322.       this.usingProxy = false;
  323.       this.proxy = var2;
  324.       this.proxyPort = var3;
  325.  
  326.       try {
  327.          InetAddress var4 = InetAddress.getByName(var1.getHost());
  328.          var1 = new URL(var1.getProtocol(), var4.getHostAddress(), var1.getPort(), var1.getFile());
  329.       } catch (UnknownHostException var5) {
  330.       }
  331.  
  332.       this.url = var1;
  333.       int var6 = var1.getPort();
  334.       if (var6 == -1) {
  335.          var6 = 80;
  336.       }
  337.  
  338.       this.openServer(var1.getHost(), var6);
  339.    }
  340.  
  341.    public HttpClient(URL var1, String var2) throws UnauthorizedHttpRequestException, IOException {
  342.       this(var1, var2, (String)null, -1);
  343.    }
  344.  
  345.    public HttpClient(URL var1) throws UnauthorizedHttpRequestException, IOException {
  346.       this(var1, (String)null, -1);
  347.    }
  348. }
  349.