私はウェブプロキシを作成していますが、これまでクライアントからGETリクエストを読んでフォーマットし、私はサーバーから応答を返すことができたと考えていますが、クライアントに応答を送信する方法が不明です。サーバからHTTPレスポンスを読み込んでクライアントに返信する方法
Scanner readClient = new Scanner(new InputStreamReader(client.getInputStream()));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("Client Request: ");
String request;
String host = "";
String path = "";
String[] parts = new String[4];
while((request = bufferedReader.readLine())!= null) {
if (request.indexOf("deflate") != -1) {
break;
}
if(request.indexOf("GET") != -1){
parts = request.split(" ");
path = parts[1];
System.out.println("THIS IS THE PATH: " + path);
}
if(request.indexOf("Host") != -1){
parts = request.split(": ");
host = parts[1];
System.out.println("THIS IS THE HOST: " + host);
}
System.out.println(request);
}
Socket server = new Socket(host, 80);
System.out.println("Successfully connected to host: " + host);
PrintWriter writeServer = new PrintWriter(new DataOutputStream(server.getOutputStream()));
InputStream readServer = server.getInputStream();
writeServer.print("GET " + path + "\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
writeServer.flush();
OutputStream writeClient = client.getOutputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
for(int s; (s=readServer.read(buffer)) != -1;)
{
baos.write(buffer, 0, s);
}
byte result[] = baos.toByteArray();
System.out.println("message sent");
}
catch (Exception e) {
System.out.println("Start Exception: " + e.getMessage());
}
}
**私は疑問に行われた編集内容を記録することが出来るのですが、私は私の文言を変更し、それの多くを含めるだけでなく、自分のコードを更新しているかわかりません。
どのような出力を期待していますか? Webページからのテキストが正しい応答になる可能性があります。 –
wgetで周りを回って、Webサーバーが何を返しているのかを確認し、プログラムが行っていることと比較してください。 – Duston
HTTP応答が必要です。ウェブページのテキストはそうではありません。私は応答を取得した後、私はクライアントにそれを送信し、Webページをロードします。私は端末にテキストが欲しくないので、私はそれを印刷しているので、何がサーバから戻ってくるのかを見ることができます。 – AndieM