且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

http协议客户端向服务器端请求时一般需要发送的内容

更新时间:2021-08-07 07:19:12


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 协议
端口
                /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"));