jetty client 与apache http client的实现、分析

简介:

谈到httpclient的话,只要会想到apache的httpclient和jetty的httpclient,但是apache的httpclient3和4之间又有区别,通过学些,最终总结了三种方式使用HttpClient,

分别为使用httpclient3,httpclient4,jetty的httpclient,下面分别来贴代码:


第1种:使用的jar包为commons-httpclient-3.1,只需要一个jar包即可

这里使用的是GetMethod,与httpcleint4有区别

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  static  void  main(String[] args) {
    HttpClient httpClient =  new  HttpClient();   //打开窗口
    GetMethod getMethod =  new  GetMethod( "http://www.baidu.com/" ); //输入网址
   try  {
      int  statusCode = httpClient.executeMethod(getMethod);   //按下回车运行,得到返回码
      System.out.println(statusCode);
      if  (statusCode != HttpStatus.SC_OK) {
          System.err.println( "Method failed: "  + getMethod.getStatusLine());
     
       }
      //读取内容 
      byte [] responseBody = getMethod.getResponseBody();   //得到返回的内容
      //处理内容
      System.out.println( new  String(responseBody));   
catch  (Exception e) {
    e.printStackTrace();
} finally {
    getMethod.releaseConnection();
   }
}


第二种,使用的jar包为httpclient4,需要的jar包由httpclient3分成了多个,自己去下载

   注意这里使用的是HttpGet,而httpclient3使用的是GetMethod

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  public  static  void  main(String[] args) {
      HttpClient httpClient =  new  DefaultHttpClient();
      HttpGet httpGet =  new  HttpGet( "http://www.baidu.com" );
      // 打印请求信息
      System.out.println(httpGet.getRequestLine());
      try  {
          // 发送请求,返回响应
          HttpResponse response =httpClient.execute(httpGet);
         // 打印响应信息
            System.out.println(response.getStatusLine());
            HttpEntity httpEntity = response.getEntity();
           System.out.println( httpEntity.getContentType());
           System.out.println(httpEntity.getContentLength());
           System.out.println(EntityUtils.getContentCharSet(httpEntity));
           InputStream in = httpEntity.getContent();   //可以得到请求的内容了
           .....                                     //这里可以自由发挥了
        
      catch  (Exception e) {
      }
  
    }

第三种:使用jetty的httpclient,jar在jetty包里面的lib包里面

    可以分为同步和异步两种

 异步:

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public  static  void  main(String[] args) {
   HttpClient client =  new  HttpClient();
   client.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);   //还可以进行其他的配置
   try  {
    client.start();
     catch  (Exception e) {
     e.printStackTrace();
     }
     
ContentExchange exchange =  new  ContentExchange()    //exchange,里面放置回调方法
{
      protected  void  onResponseComplete()  throws  IOException
      {
        super .onResponseComplete();     
        String responseContent =  this .getResponseContent();
                System.out.println(responseContent);
        ........                                   //可以对返回结果自由发挥了
      }
};
exchange.setMethod( "GET" );
exchange.setURL( "http://www.baidu.com" );
try  {
client.send(exchange);                       //client发送消息
catch  (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

同步:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HttpClient httpClient =  new  HttpClient();
     ........................... //同样对client进行配置
try  {
     httpClient.start();
     ContentExchange contentExchange =  new  ContentExchange();
     httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
     contentExchange.setURL( "http://www.baidu.com" );
     contentExchange.setTimeout( 30000 );
     httpClient.send(contentExchange);     //client发送
     contentExchange.waitForDone();        //同步等待结果返回
     System.err.println( "Response status: " +contentExchange.getResponseStatus());
     System.out.println( "Response content:" +contentExchange.getResponseContent());
catch  (Exception e) {
     e.printStackTrace();
}

希望对初学者有所帮助!!!!!




     本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1413767,如需转载请自行联系原作者






相关文章
|
4月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
285 2
|
24天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
1天前
|
安全 网络协议 网络安全
网络不稳定导致HTTP代理频繁掉线的分析
随着数字化时代的加速发展,网络安全、隐私保护及内容访问自由成为用户核心需求。HTTP代理服务器因其独特技术优势受到青睐,但其掉线问题频发。本文分析了HTTP代理服务器不稳定导致掉线的主要原因,包括网络问题、服务器质量、用户配置错误及IP资源问题等方面。
12 0
|
1月前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
3月前
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
2月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
40 2
|
2月前
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
60 1
|
2月前
|
缓存 移动开发 前端开发
HTTP请求走私漏洞原理与利用手段分析
HTTP请求走私漏洞原理与利用手段分析
56 1
|
2月前
|
消息中间件 druid Kafka
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
91 0

推荐镜像

更多