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使用详解

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

HttpClient在java中的使用

项目中一直在使用HttpClient,版本是3.6的,负责维护的同事离职后,就没有
  • hwwzyh
  • hwwzyh
  • 2014-09-10 18:52
  • 32568

导入httpClient.jar包遇到的坑

错误日志:Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> com.andro...

HttpClient及有关jar包详解

1.HttpClient简介   HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且...

Android studio导入HttpClient

总所周知,从Android6.0开始HttpClient已经被废弃从SDk中移除掉了。而今天我在学习的时候需要用到它,怎么办呢?

c#事务的使用、示例及注意事项(转)

一、事务的介 绍 .NET Framework 开发员指南 事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个 操作的一致性和完整性。 例如,在将资金从一...

java.lang.IllegalStateException: closed

使用okhttp3的时候遇到的异常:java.lang.IllegalStateException: closed。原因是流已经关闭,所以无法再进行操作。

httpClient使用总结

一. httpClient初认识       虽然JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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