Java網絡編程從入門到精通(22):實現HTTP模擬器 – JAVA編程語言程序開發技術文章

在討論HTTP協議的具體請求和響應頭字段之前,讓我們先來利用以前所學的知識來實現一個HTTP模擬器。所謂HTTP模擬器就是可以在用戶輸入HTTP的請求消息後,由這個模擬器將HTTP請求發送給相應的服務器,再接收服務器的響應消息。這個HTTP模擬器有幾下特點:

1.  可以手工輸入HTTP請求,並向服務器發送。


2.  接收服務器的響應消息。


3.  消息頭和實體內容分段顯示,也就是說,並不是象Telnet等客戶端一樣將HTTP響


應消息全部顯示,而是先顯示消息頭,然後由用戶決定是否顯示實體內容。


4.  集中發送請求。這個HTTP模擬器和Telnet不同的是,並不是一開始就連接服務器,


而是將域名、端口以及HTTP請求消息都輸完後,才連接服務器,並將這些請求發送給服務器。這樣做的可以預防服務器提前關閉網絡連接的現象。


    5. 可以循環做上述的操作。


從以上的描述看,要實現這個HTTP模擬器需要以下五步:


1.  建立一個大循環,在循環內部是一個請求/響應對。這樣就可以向服務器發送多次請求/響應以瞭。下面的四步都是被包括在循環內部的。


2.  從控制臺讀取域名和端口,這個功能可以由readHostAndPort(…)來完成。


3.  從控制臺讀取HTTP請求消息,這個功能由readHttpRequest(…)來完成。


4.  向服務器發送HTTP請求消息,這個功能由sendHttpRequest()來完成。


5.  讀取服務器回送的HTTP響應消息,這個功能由readHttpResponse(…)來完成。


下面我們就來逐步實現這五步:

一、建立一個大循環

在建立這個循環之前,先建立一個中叫HttpSimulator的類,並在這個類中定義一個run方法用來運行這個程序。實現代碼如下:


  001  package http;
  002  
  003  import java.net.*;
  004  import java.io.*;
  005  
  006  public class HttpSimulator
  007  {
  008      private Socket socket;
  009      private int port = 80;
  010      private String host = “localhost”;
  011      private String request = “”; // HTTP請求消息
  012      private boolean isPost, isHead;
  013       
  014      public void run() throws Exception
  015      {
  016          BufferedReader reader = new BufferedReader(new InputStreamReader(
  017                  System.in));
  018    &nbsp

發佈留言