長い間、私は HTTP でいくつかの情報を解析することに固執していました。
私が理解できないこと: 一部の行は解析できましたが、他の行は解析できませんでした!
public String parse(String arg) throws IOException {
scanner = new Scanner(req);
StringBuilder buildValue = new StringBuilder();
boolean lineFound = false;
int sf;
while (scanner.hasNextLine()) {
thisLine = new StringReader(scanner.nextLine());
searchFor = new StringReader(arg);
lineFound = false;
for (int tl; (tl = thisLine.read()) != -1;) {
sf = searchFor.read();
if (sf != -1) {
if (sf == tl && !lineFound) {
builder.append((char)tl);
}
} else {
if (lineFound) {
buildValue.append((char)tl);
}
if (!lineFound && builder.toString().equals(arg)) {
builder.delete(0, builder.capacity());
System.out.println("GEFUNDEN");
lineFound = true;
}
}
}
}
thisLine.close();
searchFor.close();
builder.delete(0, builder.capacity());
String parsed = buildValue.toString();
buildValue.delete(0, buildValue.capacity());
return parsed;
}
GET / HTTP/1.1
Host: xxx.xxx.xxx.xxx:xxxx
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/30.0.1599.101 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4*
解析できた唯一の行: - Host: - Accept:
よくわからないのでこちらで質問させていただきました。
よろしく、 エルクセン
編集:
フィールドを忘れました:
private String req;
private Scanner scanner;
private StringReader reader;
private StringReader searchFor;
private StringReader thisLine;
private StringBuilder builder = new StringBuilder();