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月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
4月前
|
存储 监控 安全
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(1)
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(1)
|
4月前
|
SQL 存储 安全
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)
106 0
|
4月前
|
消息中间件 Kafka Apache
Apache Flink消费Kafka数据时,可以通过设置`StreamTask.setInvokingTaskNumber`方法来实现限流
Apache Flink消费Kafka数据时,可以通过设置`StreamTask.setInvokingTaskNumber`方法来实现限流
71 1
|
4月前
|
Cloud Native Apache
电子好书分享《Apache Dubbo3 云原生升级与企业最佳实践》
电子好书分享《Apache Dubbo3 云原生升级与企业最佳实践》
27 1
|
5月前
|
存储 监控 安全
奇安信基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志安全分析系统,查询平均提速 700%
Apache Doris 助力奇安信建设全新日志存储分析平台,提升系统安全性与快速响应能力!
奇安信基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志安全分析系统,查询平均提速 700%
|
5月前
|
监控 Java 数据库连接
Apache Jmeter测压工具快速入门
Apache Jmeter测压工具快速入门
117 0
|
8月前
|
安全 druid Java
【紧急】Apache Log4j任意代码执行漏洞安全风险升级修复教程
近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
200 1
|
Apache Android开发
解决Failed resolution of: Lorg/apache/http/client/methods/HttpEntityEnclosingRequestBase的方案
解决Failed resolution of: Lorg/apache/http/client/methods/HttpEntityEnclosingRequestBase的方案
240 0
解决Failed resolution of: Lorg/apache/http/client/methods/HttpEntityEnclosingRequestBase的方案
|
11月前
|
Dubbo Cloud Native Java
带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 平滑升级到Dubbo3版本(上)
带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 平滑升级到Dubbo3版本(上)
149 0

热门文章

最新文章

推荐镜像

更多