-1

長い間、私は 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();
4

1 に答える 1