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

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

  1. import java.io.IOException;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.apache.commons.httpclient.NameValuePair;
  5. import org.apache.commons.httpclient.methods.PostMethod;
  6. import org.apache.http.HttpEntity;
  7. import org.apache.http.HttpResponse;
  8. import org.apache.http.ParseException;
  9. import org.apache.http.client.entity.UrlEncodedFormEntity;
  10. import org.apache.http.client.methods.HttpPost;
  11. import org.apache.http.impl.client.DefaultHttpClient;
  12. import org.apache.http.message.BasicNameValuePair;
  13. import org.apache.http.protocol.HTTP;
  14. import org.apache.http.util.EntityUtils;
  15. public class PostSample {
  16. public static void main(String[] args) throws ParseException, IOException {
  17. String url = "http://www.g.cn/";
  18. System.out.println(url);
  19. System.out.println("Visit google using Apache commons-httpclient 3.1:");
  20. List<NameValuePair> data3 = new ArrayList<NameValuePair>();
  21. data3.add(new NameValuePair("username", "testuser"));
  22. data3.add(new NameValuePair("password", "testpassword"));
  23. System.out.println(post3(url, data3));
  24. System.out.println("Visit google using Apache HttpComponents Client 4.0:");
  25. List<BasicNameValuePair> data4 = new ArrayList<BasicNameValuePair>();
  26. data4.add(new BasicNameValuePair("username", "testuser"));
  27. data4.add(new BasicNameValuePair("password", "testpassword"));
  28. System.out.println(post4(url, data4));
  29. }
  30. /** 使用Apache commons-httpclient 3.1,POST方法访问网页 */
  31. public static String post3(String url, List<NameValuePair> data) throws IOException {
  32. org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
  33. PostMethod postMethod = new PostMethod(url);
  34. postMethod.setRequestBody(data.toArray(new NameValuePair[data.size()]));
  35. try {
  36. System.out.println("<< Response: " + httpClient.executeMethod(postMethod));
  37. return postMethod.getResponseBodyAsString();
  38. } finally {
  39. postMethod.releaseConnection();
  40. }
  41. }
  42. /** 使用Apache HttpComponents Client 4.0,POST方法访问网页 */
  43. private static String post4(String url, List<? extends org.apache.http.NameValuePair> data)
  44. throws ParseException, IOException {
  45. org.apache.http.client.HttpClient client = new DefaultHttpClient();
  46. HttpPost httpost = new HttpPost(url);
  47. httpost.setEntity(new UrlEncodedFormEntity(data, HTTP.UTF_8));
  48. try {
  49. HttpResponse response = client.execute(httpost);
  50. HttpEntity entity = response.getEntity();
  51. System.out.println("<< Response: " + response.getStatusLine());
  52. if (entity != null) {
  53. return EntityUtils.toString(entity);
  54. }
  55. return null;
  56. } finally {
  57. client.getConnectionManager().shutdown();
  58. }
  59. }
  60. }

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

Apache HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页的更多相关文章

  1. python3.5+django2.0快速入门(二)

    昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...

  2. ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载

    ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...

  3. python3.5+django2.0快速入门(一)

    因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...

  4. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  5. JAVA中使用Apache HttpComponents Client的进行GET/POST请求使用案例

    一.简述需求 平时我们需要在JAVA中进行GET.POST.PUT.DELETE等请求时,使用第三方jar包会比较简单.常用的工具包有: 1.https://github.com/kevinsawic ...

  6. Thinkphp5.0快速入门笔记(3)

    学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 快速入门第三节 获取当前的请求 ...

  7. Thinkphp5.0快速入门笔记(2)

    学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 示例建立新的模块和控制器 在a ...

  8. rancher2.0快速入门

    注意:本入门指南的目的是让您快速的运行一个Rancher2.0环境,它不适用于生产.有关更全面的说明,请查阅Rancher安装. 本教程将指导您完成: 安装Rancher v2.0 : 创建第一个集群 ...

  9. Thinkphp5.0快速入门笔记(1)

    学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. Composer安装和更新 C ...

随机推荐

  1. sql 删除多项

    delete from 表名 where 字段 in(值,值,值.......)

  2. python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法

    一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...

  3. apache_fileupload实现文件上传_上传多个文件

    1.导包 核心类: DiskFileItemFactory – 设置磁盘空间,保存临时文件.只是一个具类. ServletFileUpload  - 文件上传的核心类,此类接收request,并解析r ...

  4. java2实用教程102小程序(分数计算和流水线计算

    import java.util.Scanner; public class test{ public static void main(String args[]){ Rational a=new ...

  5. MySQL Connector/Python 安装、测试

         安装Connector/Python: # wget http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-pyth ...

  6. CentOS 7 之几个新特性(转)

    上篇我们讲到默认没有ifconfig是centos7的新特性,所以我特意上网搜索了一下其新特性,找到一篇文章,现转过来. centos最小好化安装没有ifconfig命令 刚安装了centos7.0, ...

  7. PowerShell: 如何解决File **.ps1 cannot be loaded because the execution of scripts is disabled on this sy

    PowerShell 默认不允许执行*.ps1脚本文件.运行ps1文件会得到下面的错误: File C:\Temp\Test.ps1 cannot be loaded because the exec ...

  8. 前台任意页面调用自定义字段选项 box 单选 多选方法及查询

    在模板页增加函数,函数写法比较特殊,但是v9模板引擎nb,能够识别   <?              function xbox($field,$na){               $a=p ...

  9. git clone 远程分支

    先初始化一个git 仓库  命令:git init git clone 相应的地址 这样就会形成一个.git 隐藏文件夹 一定要注意的,要进入到子文件夹去git checkout feature/0. ...

  10. JS函数与call()apply()详解

    JavaScript中的每个函数都是一个对象. 因为函数都是对象,它们有自己的属性和方法.我们可以把它们看作数据(data). 函数和方法的区别? 函数立足于它们自己(例如:alert()), 而方法 ...