技术中心

这里象征着我们的态度和能力

>Java网络编程:实现HTTP模拟器
作者:中国IT实验室    来源:中国IT实验室    发布时间:2012-01-01      浏览次数:6347
分享到:
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

    在讨论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  }

[1] [2] [3] 下一页

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号 增值电信业务经营许可证号:滇B2-20110045
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730