📄 cwspheaders.java
字号:
* before setting its value. */ public void setIntHeader(String name, int value) { if (name == null) { return; } removeHeader(name); headers.addElement(new Header(name, new Integer(value))); } public void addIntHeader(String name, int value) { if (name == null) { return; } headers.addElement(new Header(name, new Integer(value))); } /** * Sets a WSP header with the given name and date-value. The date is specified * in terms of milliseconds since the epoch. If the header had already been * set, the new value overwrites the previous one. The containsHeader * method can be used to test for the presence of a header before setting * its value. */ public void setDateHeader(String name, long value) { if (name == null) { return; } removeHeader(name); headers.addElement(new Header(name, new Long(value))); } public void addDateHeader(String name, long value) { if (name == null) { return; } headers.addElement(new Header(name, new Long(value))); } public String getHeader(String name) { if (name != null) { for (Enumeration e = headers.elements(); e.hasMoreElements();) { Header he = (Header) e.nextElement(); if (name.equalsIgnoreCase(he.getName())) { Object o = he.getValue(); return (o == null) ? null : o.toString(); } } } return null; } public Enumeration getHeaders(String name) { Vector v = new Vector(); if (name != null) { for (Enumeration e = headers.elements(); e.hasMoreElements();) { Header he = (Header) e.nextElement(); if (name.equalsIgnoreCase(he.getName())) { Object value = he.getValue(); if( value != null ) { v.add(he.getValue().toString()); } } } } return v.elements(); } public boolean containsHeader(String name) { if (name!=null) { for (Enumeration e = headers.elements(); e.hasMoreElements();) { Header he = (Header) e.nextElement(); if (name.equalsIgnoreCase(he.getName())) { return true; } } } return false; } public Enumeration getHeaderNames() { Vector v = new Vector(); for (Enumeration e = headers.elements(); e.hasMoreElements();) { Header he = (Header) e.nextElement(); if (!v.contains(he.getName())) { v.add(he.getName()); } } return v.elements(); } private void removeHeader(String name) { // Remove all occurences of the header first if( name != null ) { for (Enumeration e = headers.elements(); e.hasMoreElements();) { Header he = (Header) e.nextElement(); if (name.equalsIgnoreCase(he.getName())) { headers.removeElement(he); } } } } /* * Get the WSP representation of the headers */ public byte[] getBytes() throws HeaderParseException { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { for (Enumeration e = headers.elements(); e.hasMoreElements();) { Header he = (Header) e.nextElement(); String hn = he.getName(); Object hv = he.getValue(); byte[] enc; if( hv == null ) { logger.debug(hn+": Ignoring header since it has no value"); } else if (hv instanceof String) { enc = codePage.encode(hn, (String) hv); if (enc != null) { out.write(enc); } else { logger.warn( "codePage.encode() returned null for header " + he.toString()); } } else if (hv instanceof Long) { enc = codePage.encode(hn, new Date(((Long) hv).longValue())); if (enc != null) { out.write(enc); } else { logger.warn( "codePage.encode() returned null for header " + he.toString()); } } else if (hv instanceof Integer) { enc = codePage.encode(hn, ((Integer) hv).intValue()); if (enc != null) { out.write(enc); } else { logger.warn( "codePage.encode() returned null for header " + he.toString()); } } else { if (logger.isDebugEnabled()) { logger.debug(hv.getClass().getName()+": Unknown type of header value, using string encoding"); } enc = codePage.encode(hn, hv.toString()); if (enc != null) { out.write(enc); } else { logger.warn( "codePage.encode() returned null for header " + he.toString()); } } } out.flush(); } catch (IOException unknown) { // We assume that this never occurs when writing to a ByteArrayOutputStream... } return out.toByteArray(); } /** * Return the size of a header field value */ public static int getHeaderValueSize(WSPDecoder decoder) { int pos = decoder.seek(0); int val = decoder.getUint8(); int ret = 0; // logger.debug("First octet of field value: "+val); if (val < 31) { // logger.debug("Number of octets to follow: "+val); ret = val + 1; } else if (val == 31) { // an UIntVar follows... //logger.debug("UIntVar follows"); ret = (int) decoder.getUintVar(); ret += decoder.seek(0)-pos; } else if ( val < 128 ) { // logger.debug("Text-String, terminated by zero "); val = 0; decoder.seek(-1); while ( decoder.getOctet() != 0) { val++; } val++; //skip the trailing \0 ret=val; } else { // Else -> Encoded 7-bit value; this header has no more data //logger.debug("7-bit value; this header has no more data"); ret=1; } decoder.pos(pos); // rollback to initial decoder position return ret; } public String toString() { StringBuffer sb = new StringBuffer(); for (Enumeration e = getHeaderNames(); e.hasMoreElements();) { String key = (String) e.nextElement(); for (Enumeration e2 = getHeaders(key); e2.hasMoreElements();) { String val = (String) e2.nextElement(); sb.append("[").append(key).append(": ").append(val).append("]"); } } return sb.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -