快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
TTP请求消息发送到服务器。下面是这个方法的实现代码:

001      private void sendHttpRequest() throws Exception 002      { 003          socket = new Socket(); 004          socket.setSoTimeout(10 * 1000); 005          System.out.println("正在连接服务器"); 006          socket.connect(new InetSocketAddress(host, port), 10 * 1000); 007          System.out.println("服务器连接成功!"); 008          OutputStream out = socket.getOutputStream(); 009          OutputStreamWriter writer = new OutputStreamWriter(out); 010          writer.write(request); 011          writer.flush(); 012      }

第004行:设置读取数据超时为10秒。

第006行:连接服务器,并设置连接超时为10秒。

五、readHttpResponse(...)方法的实现

这个方法的主要功能是从服务器读取返回的响应消息。首先读取了响应消息头,然后要求用户输入Y或N以确定是否显示响应消息的实体内容。这个程序之所以这样做,主要有两个原因:

(1) 为了研究HTTP协议。

(2) 由于本程序是以字符串形式显示响应消息的,因此,如果用户请求了一个二进制Web资源,如一个rar文件,那么实体内容将会显示乱码。所以在显示完响应消息头后由用户决定是否显示实体内容。

这个方法的实现代码如下:

001  private void readHttpResponse(BufferedReader consoleReader) 002  { 003      String s = ""; 004      try 005      { 006          InputStream in = socket.getInputStream(); 007          InputStreamReader inReader = new InputStreamReader(in); 008          BufferedReader socketReader = new BufferedReader(inReader); 009          System.out.println("---------HTTP头---------"); 010          boolean b = true; // true: 未读取消息头 false: 已经读取消息头 011          while ((s = socketReader.readLine()) != null) 012          { 013              if (s.equals("") && b == true && !isHead) 014              { 015                  System.out.println("------------------------"); 016                  b = false; 017                  System.out.print("是否显示HTTP的内容(Y/N):"); 018                  String choice = consoleReader.readLine(); 019                  if (choice.equals("Y") || choice.equals("y")) 020                  { 021                      System.out.println("---------HTTP内容---------"); 022                      continue; 023                  } 024                  else 025                      break; 026              } 027              else 028                  System.out.println(s); 029          } 030      } 031      catch (Exception e) 032      { 033          System.out.println("err:" + e.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号