http协议客户端向服务器端请求时一般需要发送的内容
out.println("GET /shopping/index.html HTTP/1.1");//请求行 包括请求方式,文件路径, http协议版本(必写)
请求头....
out.println("Aceept: */*");//客户端能够处理的文件类型(不是必须)
out.println("Host: 192.168.1.111:8080");//客户端要访问的主机及服务器的端口(必写),否则会出现400(请求错误)
out.println("Connection: close");//传输完成后和服务器的链接状态(不是必须)
out.println();//空行用来区分请求头和请求体(必写)
请求体....
改用URL和URLConnection来处理更为方便
//URL这个类通过获取URLConnection连接器的对象(也就是将连接封装成了对象:java中内置的可以解析的具体协议的对象+socket) //另外,Socket 和 DatagramSocket 是负责传输层工作的,而URL或者URLConnection是负责应用层工作的 //所以网络编程用URL是比较好的(只保留服务器端的应答体,应答消息头和应答消息行不会显示) URL url = new URL("http://localhost:8080/shopping/login.html?name=HAHA"); URLConnection con = url.openConnection(); System.out.println(con); System.out.println(url.getProtocol()); System.out.println(url.getPort()); System.out.println(url.getPath()); System.out.println(url.getFile()); System.out.println(url.getQuery()); /* http 协议 8080 端口 /shopping/login.html 路径 /shopping/login.html?name=HAHA 文件名(包括path部分 + query部分) name=HAHA 查询部分(也就是参数部分) */ InputStream in = con.getInputStream(); byte[] bt = new byte[1024*2]; int len = in.read(bt); System.out.println(new String(bt, 0, len, "utf-8"));
本文来自博客园,作者:hjzqyx,转载请注明原文链接:https://www.cnblogs.com/hujunzheng/p/4054505.html