- 締切済み
java初心者です。
ソケットクラスを用いて入力ファイルの内容をWebサーバへ送信し、サーバからの応答を別ファイルに出力するクライアントプログラムを作りたいのですが、わからないです。 ソケットクラスを使うので送受信はバイト型でやらないといけないと聞きました。 入力ファイルの内容(HTTPリクエスト)をバイト型に変換して、それを送信するにはどのようなプログラムになりますか? できれば詳しく教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Ogre7077
- ベストアンサー率65% (170/258)
バイナリ処理の Stream は、 テキスト処理の Reader/Printer に変換すれば、 見た目はテキストでも実際はバイナリとして処理されるので便利です。 // サーバーへの要求 request = socket.getInputStream(); // テキストとして書き込めるように変換 requestText = new PrintStream(request); // 行単位で処理 requestText.println("GET /hoge/boke?huga=hanya HTTP/1.0"); requestText.println("Host: foobar.example.com"); requestText.println("User-Agent: oreore/0.1 java/1.8"); requestText.println(""); // ← 大切な処理! // サーバーからの応答 response = socket.getInputStream(); // テキストとして読み取れるように変換 responseText = new InputStreamReader(response); // 読みやすくなるように変換 responseReadable = new BufferedReader(responseText); // 行単位で処理 (Java8の例) responseReadable.lines().forEach(line -> 別ファイルに行出力する処理(line)); 余計なお世話かもしれませんが HTTP 通信を行うなら java.net.HttpURLConnection を使うほうが確実かと思います。 汎用ソケットでやるならば HTTP に関する深い知識が必要ですのでがんばってください。
補足
入力ファイルの中にリクエスト要求が書いてあって、そのファイルを読み込んでやりたいんですけど・・・。