Apache HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页

简介:

Apache HttpComponents Client 4.0已经发布多时,httpclient项目从commons子项目挪到了HttpComponents子项目下,httpclient3.1和 httpcilent4.0无法做到代码向后兼容,升级比较麻烦。我在做项目之余找时间研究了一下,写了一套3.1与4.0对比的代码,不求面面俱到,但 求简单易懂。如果代码用到真实项目中,还需要考虑诸如代理、Header、异常处理之类的问题。

 

Http POST方法得到www.g.cn的源码:

import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; public class PostSample { public static void main(String[] args) throws ParseException, IOException { String url = "http://www.g.cn/"; System.out.println(url); System.out.println("Visit google using Apache commons-httpclient 3.1:"); List<NameValuePair> data3 = new ArrayList<NameValuePair>(); data3.add(new NameValuePair("username", "testuser")); data3.add(new NameValuePair("password", "testpassword")); System.out.println(post3(url, data3)); System.out.println("Visit google using Apache HttpComponents Client 4.0:"); List<BasicNameValuePair> data4 = new ArrayList<BasicNameValuePair>(); data4.add(new BasicNameValuePair("username", "testuser")); data4.add(new BasicNameValuePair("password", "testpassword")); System.out.println(post4(url, data4)); } /** 使用Apache commons-httpclient 3.1,POST方法访问网页 */ public static String post3(String url, List<NameValuePair> data) throws IOException { org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient(); PostMethod postMethod = new PostMethod(url); postMethod.setRequestBody(data.toArray(new NameValuePair[data.size()])); try { System.out.println("<< Response: " + httpClient.executeMethod(postMethod)); return postMethod.getResponseBodyAsString(); } finally { postMethod.releaseConnection(); } } /** 使用Apache HttpComponents Client 4.0,POST方法访问网页 */ private static String post4(String url, List<? extends org.apache.http.NameValuePair> data) throws ParseException, IOException { org.apache.http.client.HttpClient client = new DefaultHttpClient(); HttpPost httpost = new HttpPost(url); httpost.setEntity(new UrlEncodedFormEntity(data, HTTP.UTF_8)); try { HttpResponse response = client.execute(httpost); HttpEntity entity = response.getEntity(); System.out.println("<< Response: " + response.getStatusLine()); if (entity != null) { return EntityUtils.toString(entity); } return null; } finally { client.getConnectionManager().shutdown(); } } }

当然www.g.cn不必要通过post来访问,一般用于需要提交表单的情形。

目录
相关文章
|
2月前
|
存储 自然语言处理 BI
|
3月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
2月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
2月前
apache+tomcat配置多站点集群的方法
apache+tomcat配置多站点集群的方法
40 4
|
4月前
|
存储 消息中间件 运维
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
|
4月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
3月前
|
Linux Apache 数据安全/隐私保护
kali向Apache上部署网页
kali向Apache上部署网页
122 5
|
4月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
4月前
|
Ubuntu 关系型数据库 MySQL
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
47 0
|
4月前
|
Ubuntu Java 应用服务中间件
在Ubuntu 16.04上安装Apache Tomcat 8的方法
在Ubuntu 16.04上安装Apache Tomcat 8的方法
54 0

推荐镜像

更多