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<i; j++) { system.out.print(request.tostring()); |
新闻热点
疑难解答