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

📄 cwspheaders.java

📁 WAP Stack implementation jwap.sourceforge.net
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * 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 + -