日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

基于Jave的Web服務(wù)工作機(jī)制(5)_Windows教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!
input = socket.getInputStream();
  output = socket.getOutputStream();
await于是就創(chuàng)建一個(gè)Request對(duì)象并調(diào)用它的 parse 方法來解析原始的HTTP請(qǐng)求信息。

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

  接下來,await 方法創(chuàng)建了一個(gè)Response 對(duì)象,使用setRequest方法并調(diào)用它的sendStaticResource 方法。

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

  最后,await關(guān)閉該Socket。調(diào)用Request的getUri方法來檢查HTTP請(qǐng)求的URI是否是一個(gè)shutdown命令。如果是,shutdown變量被設(shè)置為true,程序退出while循環(huán)。

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

  Request類

  Request類代表一個(gè)HTTP請(qǐng)求。Socket處理客戶端的通訊,將返回一個(gè)InputStream對(duì)象,通過傳遞該對(duì)象,可以構(gòu)造一個(gè)Request類的實(shí)例。通過調(diào)用InputStream 對(duì)象的read方法來獲得這個(gè)HTTP請(qǐng)求的原始數(shù)據(jù)(raw data)。

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

  為了理解parse 和 parseUri 方法是如何工作的,需要知道HTTP請(qǐng)求的內(nèi)部結(jié)構(gòu)。這個(gè)結(jié)構(gòu)是在RFC2616文檔中定義的。

  一個(gè)HTTP請(qǐng)求包含三個(gè)部分:

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

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

  GET /index.html HTTP/1.1 //這是一個(gè)請(qǐng)求行
  方法parse從socket的InputStream 中讀取整個(gè)字節(jié)流,該字節(jié)流是 Request 對(duì)象傳遞進(jìn)來的,然后parse將這些字節(jié)流存儲(chǔ)在一個(gè)緩沖區(qū)里, 在緩沖區(qū)中組裝一個(gè)稱為request的StringBuffer對(duì)象。

  下面的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());
  }

來源:網(wǎng)絡(luò)搜集//所屬分類:Windows教程/更新時(shí)間:2013-04-15
相關(guān)Windows教程