目标:通过socket 模拟HTTP协议连接 tomcat,做一次POST请求
请求数据:
POST /index.jsp HTTP/1.1 Host:192.168.237.230 Content-Type:application/x-www-form-urlencoded Connection: close Content-Length:42 username=xinchun.wang&password=123456.....
响应数据:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=613C816BEC2DB87DB7A043574B68AA57; Path=/ Content-Type: text/html;charset=ISO-8859-1 Content-Length: 293 Date: Tue, 25 Apr 2017 02:58:49 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 ClientPost { 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())); String body = "username=xinchun.wang&password=123456....."; StringBuilder sb = new StringBuilder(); sb.append("POST /index.jsp HTTP/1.1\r\n"); sb.append("Host:192.168.237.230\r\n"); sb.append("Content-Type:application/x-www-form-urlencoded\r\n"); sb.append("Connection: close\r\n"); sb.append("Content-Length:"+body.length()+"\r\n"); sb.append("\r\n"); sb.append(body); 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) { e.printStackTrace(); } } }