⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpheader.java

📁 这是linux下ssl vpn的实现程序
💻 JAVA
字号:
/*
 *  SSL-Explorer
 *
 *  Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version 2 of
 *  the License, or (at your option) any later version.
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public
 *  License along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
			
package com.maverick.http;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import java.io.ByteArrayOutputStream;
import java.util.Vector;
import java.io.EOFException;
/* DEBUG */import org.apache.commons.logging.LogFactory;
/* DEBUG */import org.apache.commons.logging.Log;

public abstract class HttpHeader {

  protected final static String WHITE_SPACE = " \t\r";
  protected Hashtable fields;


  /* DEBUG */static Log log = LogFactory.getLog(HttpHeader.class);

  protected HttpHeader() {
    fields = new Hashtable();
  }

  public Enumeration getHeaderFieldNames() {
    Vector v = new Vector();
    for(Enumeration e = fields.elements(); e.hasMoreElements(); ) {
        v.addElement(((Field)e.nextElement()).n);
    }
    return v.elements();
  }

  public String getHeaderField(String headerName, int num) {
    Field f = ((Field) fields.get(headerName.toLowerCase()));
    if(f==null)
      return null;
    else {
      if(f.headerValues.size() > num)
        return (String)(f.headerValues.elementAt(num));
      else
        return null;
    }
  }

  /**
   * Get the first header for a given name.
   * @param headerName String
   */
  public String getHeaderField(String headerName) {
    return getHeaderField(headerName, 0);
  }

  public void setHeaderField(String headerName, String value) {

    if(!fields.containsKey(headerName.toLowerCase())) {
      fields.put(headerName.toLowerCase(), new Field(headerName, new Vector()));
    }

    Vector v = ((Field) fields.get(headerName.toLowerCase())).headerValues;
    v.addElement(value);
  }

  public void removeFields(String header) {
      if(fields.containsKey(header.toLowerCase())) {
          fields.remove(header.toLowerCase());
      }
  }

  public int getHeaderFieldCount(String headerName) {
    Field f = (Field) fields.get(headerName.toLowerCase());
    return f.headerValues == null ? 0 : f.headerValues.size();
  }

  public String[] getHeaderFields(String headerName) {
    Field f = (Field) fields.get(headerName.toLowerCase());
    if(f!=null) {
      String[] values = new String[f.headerValues.size()];
      f.headerValues.copyInto(values);
      return values;
    } else {
      return null;
    }
  }

  public String generateOutput(String startline) {
    String str = startline + "\r\n";
    Enumeration it = getHeaderFieldNames();

    while (it.hasMoreElements()) {
      String fieldName = (String) it.nextElement();
      int count = getHeaderFieldCount(fieldName);
      for(int i=0;i<count;i++) {
        str += (fieldName + ": " + getHeaderField(fieldName, i) + "\r\n");
      }

    }

    str += "\r\n";
    return str;
  }

  class Field {
      Vector headerValues;
      String n;

      Field(String n, Vector v) {
          this.n = n;
          this.headerValues = v;
      }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -