Receive HTTP Message via apache httpclient

Posted on 2010-07-28 20:27 祝嘉 阅读(320) 评论(0)  编辑  收藏 所属分类: LibraryCode_HttpClient
  1 /*
  2  * @(#) WebVistor.java 
  3  *
  4  * Created on Jul 28, 2010
  5  *
  6  * All rights reserved.
  7  */
  8 package httpclient;
  9 
 10 import java.io.BufferedReader;
 11 import java.io.FileWriter;
 12 import java.io.IOException;
 13 import java.io.InputStreamReader;
 14 import java.net.URI;
 15 import java.net.URISyntaxException;
 16 
 17 import org.apache.http.HttpEntity;
 18 import org.apache.http.HttpResponse;
 19 import org.apache.http.client.ClientProtocolException;
 20 import org.apache.http.client.methods.HttpGet;
 21 import org.apache.http.impl.client.DefaultHttpClient;
 22 import org.apache.log4j.ConsoleAppender;
 23 import org.apache.log4j.Logger;
 24 import org.apache.log4j.PatternLayout;
 25 
 26 /**
 27  * @author 祝嘉 (Mr.Zhujia@gmail.com | TopZhujia@163.com)
 28  * 
 29  */
 30 public class WebVistor {
 31     /**
 32      * Logger for this class
 33      */
 34     private static final Logger logger = Logger.getLogger(WebVistor.class);
 35     static {
 36         logger.addAppender(new ConsoleAppender(new PatternLayout("%m%n")));
 37     }
 38 
 39     public static void main(String[] args) throws URISyntaxException {
 40         if (logger.isDebugEnabled()) {
 41             logger.debug("main(String[]) - start");
 42         }
 43 
 44         WebVistor vistor = new WebVistor();
 45         String uri = "http://www.blogjava.net/MrZhujia/"
 46                 + "archive/2010/07/28/327357.html";
 47         vistor.visit(new URI(uri));
 48         vistor.disconnect();
 49 
 50         if (logger.isDebugEnabled()) {
 51             logger.debug("main(String[]) - end");
 52         }
 53     }
 54 
 55     private DefaultHttpClient httpclient = null;
 56     private HttpGet httpget = null;
 57     private HttpResponse response = null;
 58 
 59     public WebVistor() {
 60         httpclient = new DefaultHttpClient();
 61         httpget = new HttpGet();
 62     }
 63 
 64     public void disconnect() {
 65         if (logger.isDebugEnabled()) {
 66             logger.debug("disconnect() - start");
 67         }
 68 
 69         httpclient.getConnectionManager().shutdown();
 70 
 71         if (logger.isDebugEnabled()) {
 72             logger.debug("disconnect() - end");
 73         }
 74     }
 75 
 76     public void visit(URI uri) {
 77         if (logger.isDebugEnabled()) {
 78             logger.debug("visit(URI) - start");
 79         }
 80 
 81         httpget.setURI(uri);
 82         BufferedReader br = null;
 83         FileWriter fout = null;
 84         try {
 85             response = httpclient.execute(httpget);
 86             logger.info("response status: " + response.getStatusLine());
 87             HttpEntity entity = response.getEntity();
 88             if(null == entity){
 89                 throw new Exception("failed, empty entity");
 90             }
 91             br = new BufferedReader(new InputStreamReader(entity.getContent()));
 92             fout = new FileWriter("result.html");
 93 
 94             char[] buf = new char[1024];
 95             int length = -1;
 96             while (-1 != (length = br.read(buf))) {
 97                 fout.write(buf, 0, length);
 98             }
 99 
100         } catch (ClientProtocolException e) {
101             logger.error("visit(URI)", e);
102         } catch (IOException e) {
103             logger.error("visit(URI)", e);
104         } catch (Exception e) {
105             //don't do anything
106             logger.error("visit(URI)", e);
107         } finally {
108             try {
109                 if (null != fout) {
110                     fout.flush();
111                     fout.close();
112                 }
113                 if (null != br) {
114                     br.close();
115                 }
116                 response.getEntity().consumeContent();
117             } catch (IOException e) {
118                 logger.error("visit(URI)", e);
119             }
120         }
121 
122         if (logger.isDebugEnabled()) {
123             logger.debug("visit(URI) - end");
124         }
125     }
126 }
127 

只有注册用户登录后才能发表评论。


网站导航: