做web开发有一段时间了,但对于HTTP协议却没有深入的理解学习过。做了一小小的测试终于彻底明白了HTTP协议。自己的服务器上已经安装了Apache服务并且已经启动。Apache服务监听在80端口。

 

import java.io.*;
import java.net.*;

public class HttpRequest
{
 public static void main(String []args)throws Exception{
  //连接到服务器
  Socket socket = new Socket("127.0.0.1",80);
  OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());
  //HTTP请求头的内容,具体HTTP请求头百度 http协议详解会有一大堆的资料
  StringBuffer sb = new StringBuffer();
  sb.append("GET /mypage/button.html HTTP/1.1 ");
  sb.append("Host:localhost ");
  sb.append("Accept-Language:zh-cn ");
  //sb.append("Connection:Keep-Alive ");
  //请求头结束
  sb.append(" ");
  //将请示数据发送给服务器
  out.write(sb.toString());
  out.flush();
  BufferedReader buf = new BufferedReader(
  new InputStreamReader(socket.getInputStream()));
  String str="";
  //读取服务器返回的数据
  while((str=buf.readLine())!=" " && str!=null){
   System.out.println(str);
  }
  buf.close();
  socket.close();
 }
}
 


  返回的内容是一html文件(也是我们平时查看源码时看到的玩意)。浏览器会解析各个标签和样式,再把解析的结果输出的屏幕上。这是我们看到的页面效果。