input = socket.getInputStream(); output = socket.getOutputStream(); await于是就創建一個Request對象并調用它的 parse 方法來解析原始的HTTP請求信息。
// create Request object and parse 接下來,await 方法創建了一個Response 對象,使用setRequest方法并調用它的sendStaticResource 方法。 // create Response object 最后,await關閉該Socket。調用Request的getUri方法來檢查HTTP請求的URI是否是一個shutdown命令。如果是,shutdown變量被設置為true,程序退出while循環。 // Close the socket 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) GET /index.html HTTP/1.1 //這是一個請求行 下面的Listing 1.2.顯示了parse方法的用法: Listing 1.2. The Request class' parse method public void parse() { try { for (int j=0; j request.append((char) buffer[j]); System.out.print(request.toString()); |
新聞熱點
疑難解答