私は今週Javaを学んだばかりで、先生はテキストファイル形式で保存されたHTTPリクエストを解析するように求めています。基本的に彼は、
「GET /fenway/ HTTP/1.0\r\n」と「Host: www.redsox.com\r\n」という行だけを抽出して、テキスト形式で保存するよう求めていました。エラーが含まれているため、私のプログラムはまだうまく動作しません。私がしたことは、テキスト ファイルを 1 行ずつ読み取り、それを関数に入力してバッファを読み取ろうとし、各単語をトークン化して copyGetWord に保存し、while ループを実行して単語「GET」がgetWord を arraylist に格納することがわかりました。
もう1つのことは、これにはJavaのみを使用することが許可されており、perlやpythonは使用できません. また、jnetpcap ライブラリを試してみましたが、インストールに問題があるため、テキスト ファイルが残っています。
誰でも助けてくれることを願っています。
これはサンプル テキスト ファイルです。
Transmission Control Protocol、Src ポート: bridgecontrol (1073)、Dst ポート: http (80)、Seq: 1、Ack: 1、Len: 270 Hypertext Transfer Protocol GET /azur/ HTTP/1.0\r\n 接続: Keep-Alive \r\n ユーザー エージェント: Mozilla/4.08 [en] (WinNT; I)\r\n ホスト: www.google.com\r\n
public static void main(String[] args) {
System.out.println("Tries to read the samplepcap1.txt, \n");
ReadingFile1 handle = new ReadingFile1();
ArrayList <String> StoreLine = new ArrayList<String>();
try{
FileReader ReadPcap = new FileReader("samplePcapSmall.txt");
BufferedReader bufferPcap = new BufferedReader(ReadPcap);
String readBufLine = bufferPcap.readLine();
StoreLine.add(readBufLine);
while (readBufLine!=null){
readBufLine = bufferPcap.readLine();
handle.LookForWord(readBufLine);
}
bufferPcap.close();
}
catch (FileNotFoundException e){
System.out.println("\nFile not found");
}
catch (IOException e){
System.out.println("Problem reading the file.\n");
}
}
public String LookForWord(String getWord){
ArrayList <String>MatchingWord = new ArrayList<String>();
StringTokenizer copyGetWord = new StringTokenizer(getWord," ");
while (copyGetWord.hasMoreElements()){
if(copyGetWord.nextToken().matches("GET")){
MatchingWord.add(getWord);
}
}
System.out.println("\nMatch: "+MatchingWord);
return getWord;
}
samplepcap1.txt の読み取りを試み、ArrayList に格納して ArrayList を表示します
Match: []
Match: [ GET /fenway/ HTTP/1.0\r\n]
Match: []
Match: []
Match: []
Exception in thread "main" java.lang.NullPointerException
at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
at java.util.StringTokenizer.<init>(StringTokenizer.java:204)
at readingfile1.ReadingFile1.LookForWord(ReadingFile1.java:84)
at readingfile1.ReadingFile1.main(ReadingFile1.java:62)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)