目标:通过socket 模拟HTTP协议连接 tomcat,做一次GET请求
HTTP 协议的格式:
request: GET /index.jsp?username=xinchun.wang&password=123456 HTTP/1.1 Host:192.168.237.230 Connection: close response: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=2D3FE2C8EA372E3ACC69C48E12348B44; Path=/ Content-Type: text/html;charset=ISO-8859-1 Content-Length: 288 Date: Tue, 25 Apr 2017 03:06:57 GMT Connection: close <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> xinchun.wang 123456 </body> </html>
代码参考:
public class ClientGet {
public static void main(String[] args) {
sendRequest(8078);
}
public static void sendRequest(int port) {
try {
Socket socket = new Socket("192.168.237.230", port);
OutputStream out = socket.getOutputStream();
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
StringBuilder sb = new StringBuilder();
sb.append("GET /index.jsp?username=xinchun.wang&password=123456 HTTP/1.1\r\n");
sb.append("Host:192.168.237.230\r\n");
sb.append("Connection: close\r\n");
sb.append("\r\n");
out.write(sb.toString().getBytes());
out.flush();
String line = in.readLine();
while(line != null && line.toString() != ""){
System.out.println(line);
line = in.readLine();
}
out.close(); // 关闭Socket输出流
in.close(); // 关闭Socket输入流
socket.close(); // 关闭Socket
} catch (Exception e) {
System.out.println("Error. " + e);
}
}
}