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 HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页的更多相关文章
- python3.5+django2.0快速入门(二)
昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...
- ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载
ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...
- python3.5+django2.0快速入门(一)
因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...
- TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN
原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...
- JAVA中使用Apache HttpComponents Client的进行GET/POST请求使用案例
一.简述需求 平时我们需要在JAVA中进行GET.POST.PUT.DELETE等请求时,使用第三方jar包会比较简单.常用的工具包有: 1.https://github.com/kevinsawic ...
- Thinkphp5.0快速入门笔记(3)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 快速入门第三节 获取当前的请求 ...
- Thinkphp5.0快速入门笔记(2)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 示例建立新的模块和控制器 在a ...
- rancher2.0快速入门
注意:本入门指南的目的是让您快速的运行一个Rancher2.0环境,它不适用于生产.有关更全面的说明,请查阅Rancher安装. 本教程将指导您完成: 安装Rancher v2.0 : 创建第一个集群 ...
- Thinkphp5.0快速入门笔记(1)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. Composer安装和更新 C ...
随机推荐
- Linux UDP严重丢包问题的解决
测试系统在Linux上的性能发现丢包率极为严重,发210000条数据,丢包达110000之巨,丢包率超过50%.同等情形下Windows上测试,仅丢几条数据.形势严峻,必须解决.考虑可能是因为协议栈B ...
- call和apply区别
call和apply 基本上是一个意思 区别在于call的第二个参数可以是任意的类型,而apply的第二个参数必须是数组,也可以是arguments.call方法:语法:call(thisObj,Ob ...
- canvas在手机qq浏览器显示错乱
做大转盘的时候,使用html5 canvas 生成转盘,但在手机qq浏览器中显示错乱. 原本想在后台生成大转盘图片,后来想一想既然用图片来实现, 还不如直接由canvas 导出 toDataURL 在 ...
- php 读xml的两种方式
<?xml version="1.0" encoding="ISO-8859-1"?> <st> <stu> <nam ...
- 【转】三十分钟学会STL算法
转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把 ...
- Python基础练习
近日,因工作需要要学习Python.为了不在语言细节中无法自拔,我按照网上广为流传的<程序员技术练级攻略>中python部分的学习计划,做了三个简单的练习,算是对python有了初步的了解 ...
- aps.net 用ajax 读取服务端值
1.Default.aspx 页面内容 实例一: <%@ Page Language="C#" AutoEventWireup="true" Code ...
- html5 js跨域
介绍 当我们使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Acce ...
- PHP判断是否微新浏览器
$inwechat = false; $user_agent = $_SERVER['HTTP_USER_AGENT']; if (strpos($user_agent, 'MicroMessenge ...
- DedeCMS中最重要的四类表
栏目(类别): dede_arctype (dede数据库设计者认为:不管你是存放什么样的数据(软件,商品,电影..)都应该属于某个栏目(类型)) 内容主表:dede_archives (织梦数据库的 ...