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,如需转载请自行联系原作者






相关文章
|
6月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
844 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
974 5
|
12月前
|
存储 SQL Apache
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
本文将从技术选型的视角,从开放性、系统架构、实时写入、实时存储、实时查询等多方面,深入分析 Apache Doris 与 Elasticsearch 的能力差异及性能表现
1454 17
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
1257 2
|
9月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
816 15
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
560 8
|
存储 数据挖掘 数据处理
Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析
【10月更文挑战第8天】随着数据湖技术的发展,越来越多企业开始利用这一技术优化数据处理。Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析。本文分享了巴别时代在构建基于 Paimon 的 Streaming Lakehouse 的探索和实践经验,包括示例代码和实际应用中的优势与挑战。
804 1
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
227 2

热门文章

最新文章

推荐镜像

更多