我正在尝试使用http帧实现一个java服务器,我有几个URI:/login.jsp和/logout.jsp,它们位于http格式的请求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方法打破了类型,并将标题分开。
但问题是在向服务器发送登录操作后,如果我尝试发送注销操作,则存储在字符串构建器中的已解析信息缺少字符(更多特别是RequestType,RequestURI和HttpVersion)丢失了,只能找到标题。
此外,如果我尝试打印从inputStream收到的每个字符,那时我会看到应该在框架中的所有字符。
答案 0 :(得分:0)
你确定你想要break;
行而不是continue;
中断将导致while循环退出而使用continue将简单地跳过else并运行while循环的下一次迭代。< / p>
答案 1 :(得分:0)
以下代码通过删除重复项来打印给定字符串中所有缺少的字符。
import java.util.*;
public class MissChars
{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
StringBuffer sb=new StringBuffer();
char c[]=str.toCharArray();
LinkedHashSet<Character> set=new LinkedHashSet<Character>();
for(int i=0;i<c.length;i++)
set.add(c[i]);
for(char cc:set)
sb.append(cc);
String sss=new String(sb);
char arr[]=sss.toCharArray();
for(char i='a';i<='z';i++)
{
for(int j=0;j<arr.length;j++)
{
if(i!=arr[j])
count++;
if(count==arr.length)
System.out.print(i);
}
count=0;
}
}
}