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

📄 httprequestheader.java

📁 这是个JAVA开发的WEB邮箱
💻 JAVA
字号:
/* $Id: HTTPRequestHeader.java,v 1.4 2000/09/13 10:35:45 wastl Exp $ */package net.wastl.webmail.server.http;import java.io.*;import java.util.*;import javax.activation.DataSource;import javax.mail.*;import javax.mail.internet.*;import gnu.regexp.*;import net.wastl.webmail.server.*;import net.wastl.webmail.misc.*;import net.wastl.webmail.exceptions.TimeoutException;import net.wastl.webmail.debug.ErrorHandler;import net.wastl.webmail.exceptions.*;/** * HTTPHeader.java * * * Created: Tue Feb  2 15:25:48 1999 * * @author Sebastian Schaffert * @version */public class HTTPRequestHeader  {    private Hashtable content;    private Hashtable headers;    public HTTPRequestHeader() {	headers=new Hashtable(10,.9f);	content=new Hashtable(5,.9f);    }    public String getMethod() {	return getHeader("Method");    }    public String getPath() {	return getHeader("Path");    }    public String getVersion() {	return getHeader("Version");    }    public void setPath(String s) {	setHeader("PATH",Urlify.unUrlify(s));    }    public void setMethod(String s) {	setHeader("METHOD",s);    }    public void setVersion(String s) {	setHeader("VERSION",s);    }    public void setEncodedContent(String url_encoded, String contenttype) {	if(contenttype.toLowerCase().startsWith("application/x-www-form-urlencoded")) {	    StringTokenizer t=new StringTokenizer(url_encoded,"&");	    while(t.hasMoreTokens()) {		try {		    String str=t.nextToken();		    StringTokenizer tok=new StringTokenizer(str,"=\r\n");		    String key="";		    String value="";		    try {			key=Urlify.unUrlify(tok.nextToken());			value=Urlify.unUrlify(tok.nextToken());		    } catch(Exception e) {		    } finally {			content.put(key.toUpperCase(),value);		    }		} catch(NoSuchElementException e) {		    e.printStackTrace();		    System.err.println("While reading post");		}	    }	} else if(contenttype.toLowerCase().startsWith("multipart/form-data")) {	    String s="Content-type: "+headers.get("CONTENT-TYPE")+"\nContent-length: "+headers.get("CONTENT-LENGTH")+"\n"		+ url_encoded;	    try {		HTTPDataSource ds=new HTTPDataSource(s,((String)headers.get("CONTENT-TYPE")));		MimeMultipart m=new MimeMultipart(ds);		//System.err.println("Parts: "+m.getCount());		for(int i=0;i<m.getCount();i++) {		    MimeBodyPart p=(MimeBodyPart)m.getBodyPart(i);		    		    Enumeration enum=p.getAllHeaders();		    while(enum.hasMoreElements()) {			Header h=(Header)enum.nextElement();			//System.err.println(h.getName()+" "+h.getValue());		    }		    p.setHeader("Content-Transfer-Encoding","binary");		    p.setHeader("Content-Type","application/octet-stream");		    //System.err.println(p.getFileName());		    		    String disp=p.getHeader("CONTENT-DISPOSITION",";");		    RE name_re=new RE("name\\=\"([^\"]+)\"",RE.REG_MULTILINE);		    REMatch name_m=name_re.getMatch(disp);		    String name=name_m.substituteInto("$1");		    		    ByteStore bs=parseMIME(p);		    bs.setName(p.getFileName());		    bs.setContentType(WebMailServer.getStorage().getMimeType(p.getFileName()));		    content.put(name.toUpperCase(),bs);				}	    } catch(Exception e) {		e.printStackTrace();	    }	    	} else {	    System.err.println("Unsupported contenttype! "+contenttype);	}    }    public void setHeader(String key, String value) {	if(headers == null) {	    headers=new Hashtable();	}	//System.out.println("DEBUG: Setting "+key.trim().toUpperCase()+" to "+value);	headers.put(key.toUpperCase(), value);    }    public String getHeader(String t) {	return (String)headers.get(t.toUpperCase());    }    public Hashtable getContent() {	return content;    }    public Object getObjContent(String key) {	if(content!=null) {	    return content.get(key.toUpperCase());	} else {	    return null;	}    }    public String getContent(String key) {	if(content!=null) {	    Object o=content.get(key.toUpperCase());	    if(o == null) {		return null;	    } else if(o instanceof String) {		return (String)o;	    } else if(o instanceof ByteStore) {		return new String(((ByteStore)o).getBytes());	    } else {		return "";	    }	    //return (String)content.get(key.toUpperCase());	} else {	    return "";	}    }    public boolean isContentSet(String key) {	Object s=content.get(key.toUpperCase());	return s != null && !(s instanceof String && ((String)s).trim().equals(""));    }    public void setContent(String key, String value) {	content.put(key.toUpperCase(),value);    }    public Enumeration getHeaderKeys() {	return headers.keys();    }    public Enumeration getContentKeys() {	return content.keys();    }    public String toString() {	String s="Method: "+headers.get("METHOD")+", Path="+headers.get("PATH")+", HTTP-version: "+headers.get("VERSION")+"\n";	s+="HTTP Headers:\n";	Enumeration e=headers.keys();	while(e.hasMoreElements()) {	    String h=(String)e.nextElement();	    s+="Header name: "+h+", value: "+headers.get(h)+"\n";	}	if(content != null) {	    s+="Form Content:\n";	    e=content.keys();	    while(e.hasMoreElements()) {		String h=(String)e.nextElement();		s+="Header name: "+h+", value: "+content.get(h)+"\n";	    }	}	return s;    }            protected static ByteStore parseMIME(MimeBodyPart p) {	try {	    InputStream in=null;	    String type="";	    int size=Integer.parseInt(WebMailServer.getStorage().getConfig("max attach size"));	    if(p instanceof MimeBodyPart) {		MimeBodyPart mpb=(MimeBodyPart)p;		InputStream is=mpb.getInputStream();				/* Workaround for Java or Javamail Bug */		in=new BufferedInputStream(is);		ByteStore ba=ByteStore.getBinaryFromIS(in,size);		in=new ByteArrayInputStream(ba.getBytes());		/* End of workaround */		size=in.available();			    } else {		//System.err.println("*** No MIME Body part!! ***");		in=p.getInputStream();	    }	    	    ByteStore data=ByteStore.getBinaryFromIS(in,size);	    //data.setContentType(p.getContentType());	    data.setContentEncoding(p.getHeader("Content-Transfer-Encoding")[0]);	    return data;	} catch(Exception e) {	    return null;	}    }        protected class HTTPDataSource implements DataSource {	InputStream is;	String contenttype;		HTTPDataSource(String in, String cont) {	    contenttype=cont;	    is=new ByteArrayInputStream(in.getBytes());	}	public InputStream getInputStream() throws IOException {	    if(is==null) {		throw new IOException("No InputStream");	    }	    return is;	}	public OutputStream getOutputStream() throws IOException {	    throw new IOException();	}	public String getContentType() {	    return contenttype;	}	public String getName() {	    return "NoName";	}    }} // HTTPHeader

⌨️ 快捷键说明

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