基于Jave的Web服务工作机制(5)
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-06
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 request.append((char) buffer[j]); } System.out.print(request.toString()); uri = parseUri(request.toString()); } 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 解析Web接口描述语言WSDL(1)下一篇: 解析Web接口描述语言WSDL(6)
关于基于Jave的Web服务工作机制(5)的所有评论