国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Win服務器 > 正文

基于Jave的Web服務工作機制(5)

2024-09-10 00:02:42
字體:
來源:轉載
供稿:網友
input = socket.getInputStream();
  output = socket.getOutputStream();
await于是就創建一個Request對象并調用它的 parse 方法來解析原始的HTTP請求信息。

  // create Request object and parse
  Request request = new Request(input);
  request.parse();

  接下來,await 方法創建了一個Response 對象,使用setRequest方法并調用它的sendStaticResource 方法。

  // create Response object
  Response response = new Response(output);
  response.setRequest(request);
  response.sendStaticResource();

  最后,await關閉該Socket。調用Request的getUri方法來檢查HTTP請求的URI是否是一個shutdown命令。如果是,shutdown變量被設置為true,程序退出while循環。

  // Close the socket
  socket.close();
  //check if the previous URI is a shutdown command
  shutdown = request.getUri().equals(SHUTDOWN_COMMAND);

  Request類

  Request類代表一個HTTP請求。Socket處理客戶端的通訊,將返回一個InputStream對象,通過傳遞該對象,可以構造一個Request類的實例。通過調用InputStream 對象的read方法來獲得這個HTTP請求的原始數據(raw data)。

  Request 有兩個公共方法:parse 和 getUri。parse方法解釋HTTP請求的原始數據。它不做很多事情----它能夠利用的唯一信息只是HTTP請求的URI ,這個URI是從私有方法 parseUri.得到的。parseUri 方法保存URI 到uri 變量中,然后調用公共方法getUri來返回一個HTTP請求的URI。

  為了理解parse 和 parseUri 方法是如何工作的,需要知道HTTP請求的內部結構。這個結構是在RFC2616文檔中定義的。

  一個HTTP請求包含三個部分:

  請求行(Request line)
  請求包頭(Headers)
  消息體(Message body)

  現在,我們僅僅只對HTTP請求的第一部分請求行(Request line)感興趣。一個請求行由方法標記開始,后面根請求的URI和協議版本,最后由CRLF字符結束。請求行中的元素被空格字符分開。比如,使用GET方法請求的index.html文件的請求行如下:

  GET /index.html HTTP/1.1 //這是一個請求行
  方法parse從socket的InputStream 中讀取整個字節流,該字節流是 Request 對象傳遞進來的,然后parse將這些字節流存儲在一個緩沖區里, 在緩沖區中組裝一個稱為request的StringBuffer對象。

  下面的Listing 1.2.顯示了parse方法的用法:

  Listing 1.2. The Request class' parse method

  public void parse() {
  // Read a set of characters from the socket
  StringBuffer request = new StringBuffer(2048);
  int i;
  byte[] buffer = new byte[2048];

  try {
    i = input.read(buffer);
  }
  catch (IOException e) {
    e.printStackTrace();
    i = -1;
  }

  for (int j=0; j<i; j++) {
    request.append((char) buffer[j]);
  }

  System.out.print(request.toString());
  uri = parseUri(request.toString());
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬莱市| 衡南县| 昌平区| 如皋市| 台安县| 洛浦县| 安陆市| 黎川县| 峨边| 南漳县| 荆州市| 内江市| 靖边县| 宁夏| 新邵县| 肇东市| 从化市| 翼城县| 崇文区| 克拉玛依市| 大关县| 荣昌县| 宿迁市| 广南县| 厦门市| 宣汉县| 建德市| 定陶县| 新化县| 西乌珠穆沁旗| 牙克石市| 禹州市| 泉州市| 芜湖市| 新沂市| 三原县| 洛宁县| 建始县| 沛县| 蒙阴县| 宾阳县|