开发者社区> 激酶> 正文

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来访问,一般用于需要提交表单的情形。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
全面升级 —— Apache RocketMQ 5.0 SDK 的新面貌
长久以来,RocketMQ 易于部署、高性能、高可用的架构,支撑了数十年来集团内外海量的业务场景。时至今日,为了迎接如今云原生时代的新挑战,我们重磅推出了 RocketMQ 5.0 新架构。
51 0
《Apache Flink 流式应用中状态的数据结构定义升级》电子版地址
Apache Flink 流式应用中状态的数据结构定义升级
12 0
Apache Flink 1.12.0 升级说明
就在刚才 Apache Flink 社区宣布 Flink 1.12.0 版本正式发布了,从这个版本开始真正的流批一体又往前迈了一大步. Release Notes - Flink 1.12 这些发布说明讨论了在 Flink 1.11 和 Flink 1.12 之间发生变化的重要方面,比如配置、行为或依赖关系。如果您计划将 Flink 版本升级到 1.12,请仔细阅读这些说明。
289 0
Apache Doris 集群升级
Apache Doris 可以通过滚动升级的方式,平滑进行升级。升级顺序是先升级BE,再升级FE,不能颠倒升级顺序。Doris保证BE向后兼容FE。
383 0
elasticsearch 升级Apache Log4j2组件包
elasticsearch 升级Apache Log4j2组件包
885 0
全面升级 —— Apache RocketMQ 5.0 SDK 的新面貌
长久以来,RocketMQ 易于部署、高性能、高可用的架构,支撑了数十年来集团内外海量的业务场景。时至今日,为了迎接如今云原生时代的新挑战,我们重磅推出了 RocketMQ 5.0 新架构。
1164 0
Apache Spark中国技术交流群升级到企业群啦!!!!!!
普通群容量已满足不了Spark群众日益增长的热情,因此我们做了一个重要的决定,将全部群成员转移到企业群
1473 0
Apache Flink Client生成StreamGraph
概述 上文我们分析提交流程时,RemoteStreamEnvironment类的execute方法的第一步就是生成StreamGraph。 StreamGraph是用于表示流的拓扑结构的数据结构,它包含了生成JobGraph的必要信息。
2005 0
+关注
激酶
阿里云事业群技术专家,9年企业级软件开发经验,3年互联网软件开发经验。全栈工程师,生物专业出身,测试、数据处理、应用开发、前端、架构均有涉猎。更是一名马拉松及手工制作的爱好者。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
贺小令|Apache Flink 1.16 简介
立即下载
Apache Dubbo3 源码深入解读
立即下载
Apache Dubbo 微服务开发从入门到精通
立即下载