Webページをバイト単位で読み込もうとしましたが、Javaコンソールに常に「BadRequestError400」メッセージが返されます(コンソールにコンテンツを表示しています)。バイトコードを読み取ったことが原因で、修正する方法が見つかりませんでした。コードと結果は次のとおりです。
Socket s = new Socket(InetAddress.getByName(req.hostname), 80);
PrintWriter socketOut = new PrintWriter(s.getOutputStream());
socketOut.print("GET "+ req.url + "\n\n");
socketOut.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
StringBuffer buffer = new StringBuffer();
int data = in.read();
while (data != -1) {
char theChar = (char) data;
buffer.append(theChar);
data = in.read();
}
in.close();
byte[] result = buffer.toString().getBytes();
out.write(result);
結果には、不正なリクエストメッセージから始まるhtmlタグが含まれていますが、それらを削除したので、結果は次のようになります。
Thread with id 10 URL: http://www.facebook.com.tr/
Host: www.facebook.com.tr
HTTP/1.1 400 Bad Request
Content-Type: text/html
Date: Wed, 17 Oct 2012 10:18:06 GMT
Connection: close
Content-Length: 134
400 Bad Request
Method Not Implemented
Invalid method in request