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"));
?