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 ...
随机推荐
- Hibernate 关联查询 相关错误
错误提示: could not resolve property: 确定有相关属性时,记得使用 criteria.createAlias @ManyToOne 若可能为null 要加上 @NotFou ...
- Memcached 深度分析
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库 负载,提升性能.关于这个东西,相信很多人都用过,本文意在通过 ...
- UIGestureRecognizer手势
常用手势: 滑动,轻点,捏合,旋转,拖拽,长按 1.滑动(快速滑动) let swipeUp = UISwipeGestureRecognizer(target: self, action: Sele ...
- Swift - 41 - swift1.2新特性(1)
更简洁的if-let import UIKit func attack(name: String, enemyName: String, weapon: String) { print("\ ...
- QT5-控件-QTimeEdit和QTime
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTimeEdit> #i ...
- 给C++初学者的50个忠告(好文转载)
给C++初学者的50个忠告 1.把C++当成一门新的语言学习(和C没啥关系!真的.): 2.看<Thinking In C++>,不要看<C++变成死相>: 3. ...
- wm_char
用于接收键盘输入的消息 int CXuexi2View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateS ...
- JS--图片轮播效果
搞了很长时间才弄清楚图片轮播效果的原理,理解各个事件发生的原因,浪费了这么长的时间,只怪自己的知识太过于薄弱.现将代码写下,供大家参看,如有不妥之处还望指出,大家一起学习. 功能: 1.点击左右两边的 ...
- RAILS局部视图操作样例
按如下书操作的,讲得很易懂.. <html> <head> <title>SampleApp</title> <%= stylesheet_lin ...
- java中Runnable接口含义
Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口. Runnable接口非常简单,就定义了一个方法run(),继承Runnable并实现这个 方法就可以实现多线程了,但是 ...