📄 cwspheaders.java
字号:
* 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 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 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 {
// logger.warn(hv.getClass().getName()+": Unsupported header value type");
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 + -