我正在编写Web代理,到目前为止,我可以从客户端读取GET请求,格式化并将其发送到服务器,我相信我已经能够从服务器获得响应,但我不确定如何将响应发送到客户端。如何从服务器(作为Web代理)读取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());
}
}
**不知道我应该如何记录的问题所做出的编辑,但我已经改变了我的措辞,并更新了我的代码,以及包含更多。
你期望什么样的输出?来自网页的文字可能是正确的回应。 –
玩弄wget,看看它是一个Web服务器正在返回并将其与您的程序正在做的事情进行比较。 – Duston
我想要HTTP响应。所以不是来自网页的文字。收到响应后,我会将它发送给客户端并加载网页。我不希望终端中的文本,我只是打印它,以便我可以看到从服务器返回的内容。 – AndieM