快速业务通道

Java网络编程从入门到精通(22):实现HTTP模拟器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21

Java网络编程从入门到精通(22):实现HTTP模拟器

时间:2011-01-12

在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后,由这个模拟器将HTTP请求发送给相应的服务器,再接收服务器的响应消息。这个HTTP模拟器有几下特点:

1.可以手工输入HTTP请求,并向服务器发送。

2.接收服务器的响应消息。

3.消息头和实体内容分段显示,也就是说,并不是象Telnet等客户端一样将HTTP响

应消息全部显示,而是先显示消息头,然后由用户决定是否显示实体内容。

4.集中发送请求。这个HTTP模拟器和Telnet不同的是,并不是一开始就连接服务器,

而是将域名、端口以及HTTP请求消息都输完后,才连接服务器,并将这些请求发送给服务器。这样做的可以预防服务器提前关闭网络连接的现象。

5.可以循环做上述的操作。

从以上的描述看,要实现这个HTTP模拟器需要以下五步:

1.建立一个大循环,在循环内部是一个请求/响应对。这样就可以向服务器发送多次请求/响应以了。下面的四步都是被包括在循环内部的。

2.从控制台读取域名和端口,这个功能可以由readHostAndPort(...)来完成。

3.从控制台读取HTTP请求消息,这个功能由readHttpRequest(...)来完成。

4.向服务器发送HTTP请求消息,这个功能由sendHttpRequest()来完成。

5.读取服务器回送的HTTP响应消息,这个功能由readHttpResponse(...)来完成。

下面我们就来逐步实现这五步:

一、建立一个大循环

在建立这个循环之前,先建立一个中叫HttpSimulator的类,并在这个类中定义一个run方法用来运行这个程序。实现代码如下:

001  package http; 002 003  import java.net.*; 004  import java.io.*; 005 006  public class HttpSimulator 007  { 008      private Socket socket; 009      private int port = 80; 010      private String host = "localhost"; 011      private String request = ""; // HTTP请求消息 012      private boolean isPost, isHead; 013 014      public void run() throws Exception 015      { 016          BufferedReader reader = new BufferedReader(new InputStreamReader( 017                  System.in)); 018          while (true)  // 开始大循环 019          { 020              try 021              { 022                  if (!readHostAndPort(reader)) 023                      break; 024                  readHttpRequest(reader); 025                  sendHttpRequest(); 026                  readHttpResponse(reader); 027              } 028              catch (Exception e) 029              { 030                  System.out.println("err:" + e.getMessage()); 031              } 032          } 033      } 034      public static void main(String[] args) throws Exception 035      { 036          new HttpSimulator().run(); 037      } 038  }

从上面的代码可以看出,第022、024、025和026分别调用了上述的四个方法。这些方法的具体实现将在后面讨论。上面的代码除了调用这四个核心方法外,还做了一些准备工作。在008至012行定义了一些以后要用到

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号