【发布时间】:2015-03-15 04:13:54
【问题描述】:
我正在尝试使用 http 框架实现 java 服务器,我有几个 URI:/login.jsp 和 /logout.jsp,它们可以在 http 格式的 Request URI 中找到。
当我向服务器发送注销请求时,我会使用如下标头发送它:
Cookie: user_auth="SomeCookie".
代码如下:
public HttpMessage nextMessage() {
if (!isAlive()) {
try {
throw new IOException("Tokenizer is Closed");
} catch (IOException e) {
e.printStackTrace();
}
}
// Return String
HttpMessage newMessage = null;
String output = null;
StringBuilder stringBuilder = new StringBuilder();
try {
int c;
while ((c = this.fInputStream.read()) != -1) {
if (c == this.fDelimiter)
break;
else
stringBuilder.append((char) c);
}
// Create an HttpMessage from the information received
output = stringBuilder.toString();
} catch (IOException e) {
this.fClosed = true;
try {
throw new IOException("Connection is Dead");
} catch (IOException e1) {
e1.printStackTrace();
}
}
newMessage = parseHttp(output);
return newMessage;
}
parseHttp 方法将类型和标头分开。
但问题是在向服务器发送 login 操作后,如果我尝试发送 logout 操作,则存储在字符串生成器中的解析信息缺少字符(更多特别是 RequestType、RequestURI 和 HttpVersion )丢失,只能找到标头。
此外,如果我尝试打印从 inputStream 收到的每个字符,我会看到所有应该在框架中的字符。
【问题讨论】:
标签: java tcp server tokenize stringbuilder