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

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:14:19
字體:
來源:轉載
供稿:網友
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());
  }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米易县| 溧阳市| 友谊县| 南川市| 江都市| 南京市| 望城县| 独山县| 沛县| 大荔县| 酉阳| 平谷区| 海伦市| 宣恩县| 临高县| 阳山县| 池州市| 阿合奇县| 礼泉县| 汝南县| 青海省| 聊城市| 江口县| 饶阳县| 富川| 克山县| 武夷山市| 汉沽区| 荥经县| 遂宁市| 新津县| 长乐市| 新绛县| 太仆寺旗| 黄浦区| 安陆市| 光山县| 马关县| 吉木乃县| 松桃| 施秉县|