HttpClient类包基本使用方法

原创 2016年08月29日 11:00:08

HttpClient类包基本使用方法

1.1Get与Post:

HttpClient类包主要目标是发送和接收报文,即HttpGet和HttpPost

1.2使用HttpGet时共分为7步:

A. 创建HttpClient对象,由于HttpClient是抽象类,所以一般使用DefaultHttpClient类

B.创建一个HttpGet对象,一般可传入url参数将其初始化

C.创建HttpResponse对象,将HttpGet对象传入HttpClient对象的execute方法,使用其结果初始化HttpResponse

D.创建HttpEntity对象,使用HttpResponse的getEntity方法初始化HttpEntity

E.对HttpEntity(http实体)进行操作

F.销毁HttpEntity对象

G.关闭httpGet连接

经典的代码如下所示:

DefaultHttpClient httpClient = new DefaultHttpClient();                               (A)

HttpGet httpGet = new HttpGet(url);                                             (B)

HttpResponse httpResponse = httpClient.execute(httpGet);                           (C)

HttpEntity httpEntity = httpResponse.getEntity();                                    (D)

Do something on httpEntity                                                    (E)

EntityUtils.consume(httpEntity)                                                 (F)

httpGet.releaseConnection()                                                   (G)

1.3使用HttpPost时:

A.创建HttpClient对象,由于HttpClient是抽象类,所以一般使用DefaultHttpClient类

B.创建一个HttpPost对象,一般可传入url参数将其初始化

C.创建一个链表,按要求添加提交的内容

D.将链表转化为实体并关联HttpPost

E.创建HttpResponse对象,使用HttpClient执行HttpPost的结果初始化

F.创建HttpEntity对象,使用HttpResponse对象getEntity方法初始化

G.对HttpEntity(http实体)进行操作

H.销毁HttpEntity对象

I.关闭HttpPost连接(经典的代码略,可参见二)

二 代码及一些注释

使用Get与Post方法(参考QuickStart.java,并给出一些注释,见结束部分):

package testhttpclient;

import java.util.ArrayList;

import java.util.List;

import java.util.logging.Level;

import java.util.logging.Logger;

 

import java.io.UnsupportedEncodingException;

import java.io.IOException;

 

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.NameValuePair;//在httpcore中,想必是与http底层有关

import org.apache.http.message.BasicNameValuePair;//这个貌似也是在httpcore中

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.HttpEntity;

import org.apache.http.util.EntityUtils;

/*

 * commoms-logging加入之后就没有抛出异常了

*/

/*

 * test1:测试get与post方法

 * 目标:能理解get与post方法的使用过程

 */


public class TestHttpClient {

   

    public static void main(String[] args) throwsException{

        // TODO codeapplication logic here

        DefaultHttpClienthttpClient = new DefaultHttpClient();

       

        HttpGet httpGet = newHttpGet("http://www.baidu.com");

        HttpResponsehttpResponseG = httpClient.execute(httpGet);

        try{

           System.out.println(httpResponseG.getStatusLine());

            HttpEntityhttpEntityG = httpResponseG.getEntity();

            /*

             * do somethingwith httpEntityG

             */

           System.out.println(httpEntityG.getContentLength());

           EntityUtils.consume(httpEntityG);

        }

        finally{

           httpGet.releaseConnection();

        }

       

        HttpPost httpPost =new HttpPost("http://www.baidu.com");

        List<NameValuePair> nvp = new ArrayList<NameValuePair>();

        nvp.add(newBasicNameValuePair("username", "liudongwei"));

        nvp.add(newBasicNameValuePair("password", "nuaa"));

        try {

            httpPost.setEntity(newUrlEncodedFormEntity(nvp));

        } catch(UnsupportedEncodingException ex) {

           Logger.getLogger(TestHttpClient.class.getName()).log(Level.SEVERE, null,ex);

        }

        HttpResponsehttpResponseP = httpClient.execute(httpPost);

       

        try{

           System.out.println(httpResponseP.getStatusLine());

            HttpEntityhttpEntityP = httpResponseP.getEntity();

            /*

             * do somethingwith httpEntity

             */

            EntityUtils.consume(httpEntityP);

        }

        finally{

           httpPost.releaseConnection();

        }

    }

}


/*

 * 注:需要导入的类:

 * htmllexer.jar  (一种词法分析器,核心是采用的核心算法是通过函数readch()把下一个输入字符读到变量peek中,函数scan在略过所有空白字符后,首先试图识别像"<="这样的复合词法单元和整数数字,如果不成功,它就试图读入一个字符)

 * httpclient-4.2.3.jar

 * httpclient-cache-4.2.3.

 * httpcore-4.2.2.jar  httpclient的内核基于httpcore

 * common-codec-1.6.jarcommon  项目中常用于处理编码方法问题的工具包,如DES,MD5,Base64

 *commons-logging-1.1.1.jar   作为日志文件用

 */

HttpClient初步使用方法

HttpClient简单使用 准备          Apache官网下载 HttpClient , 下不了的点击这里,下载完后解压取lib文件夹中jar包导入到项目中 在进行本例之前需要了...
  • manymore13
  • manymore13
  • 2013年01月08日 15:36
  • 26323

HttpClient的Post和Get各种方法的工具类

package com.taotao.common.utils; import java.io.IOException; import java.net.URI; import java.util....
  • ZuoAnYinXiang
  • ZuoAnYinXiang
  • 2015年12月30日 17:22
  • 2747

轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求

最近更新了一下HttpClientUtil工具类代码,主要是添加了一个参数HttpContext,这个是用来干嘛的呢?其实是用来保存和传递Cookie所需要的。因为我们有很多时候都需要登录,然后才能请...
  • xiaoxian8023
  • xiaoxian8023
  • 2016年01月07日 11:45
  • 10538

HttpClient 发送 HTTP、HTTPS 请求的简单封装

序 最近这几周,一直在忙同一个项目,刚开始是了解需求,需求有一定了解之后,就开始调第三方的接口。由于第三方给提供的文档很模糊,在调接口的时候,出了很多问题,一直在沟通协调,具体的无奈就不说了,由于...
  • happylee6688
  • happylee6688
  • 2015年07月30日 12:38
  • 63866

httpclient常用基本抓取类

package com.reallyinfo.athena.crawlMethodManager; import java.io.IOException; import java.io.Input...
  • q383965374
  • q383965374
  • 2014年09月17日 11:53
  • 2528

HttpClient及有关jar包详解

1.HttpClient简介   HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且...
  • csh624366188
  • csh624366188
  • 2012年01月07日 13:47
  • 26489

关于httpClient系列包找不到问题

好久没更新博客了,最近在学习视频的知识遇到瓶颈了。。。。。。昨天有个网友问了我这么一个问题:他之前的过程里面是有httpClient系列的jar包,但是当他升级到最新的studio在编译时报了没有找到...
  • qq_33756493
  • qq_33756493
  • 2017年04月01日 09:26
  • 543

HttpClient jar包使用详解

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2014年12月21日 19:05
  • 10846

HttpClient初步使用方法

HttpClient简单使用 准备          Apache官网下载 HttpClient , 下不了的点击这里,下载完后解压取lib文件夹中jar包导入到项目中, 还需要导入common...
  • weiqubo
  • weiqubo
  • 2015年06月15日 19:40
  • 2804

httpclient-4.5所需jar包

  • 2015年07月15日 15:43
  • 2.52MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HttpClient类包基本使用方法
举报原因:
原因补充:

(最多只允许输入30个字)