`

httpclient3.1中的两个关键方法

    博客分类:
  • java
 
阅读更多
在HttpMethodBase类中,关键方法1:
 public int execute(HttpState state, HttpConnection conn)
        throws HttpException, IOException {
                
        LOG.trace("enter HttpMethodBase.execute(HttpState, HttpConnection)");

        // this is our connection now, assign it to a local variable so 
        // that it can be released later
        this.responseConnection = conn;

        checkExecuteConditions(state, conn);
        this.statusLine = null;
        this.connectionCloseForced = false;

        conn.setLastResponseInputStream(null);

        // determine the effective protocol version
        if (this.effectiveVersion == null) {
            this.effectiveVersion = this.params.getVersion(); 
        }

        writeRequest(state, conn);
        this.requestSent = true;
        readResponse(state, conn);
        // the method has successfully executed
        used = true; 

        return statusLine.getStatusCode();
    }
关键方法2:
 protected void readResponse(HttpState state, HttpConnection conn)
    throws IOException, HttpException {
        LOG.trace(
        "enter HttpMethodBase.readResponse(HttpState, HttpConnection)");
        // Status line & line may have already been received
        // if 'expect - continue' handshake has been used
        while (this.statusLine == null) {
            readStatusLine(state, conn);
            processStatusLine(state, conn);
            readResponseHeaders(state, conn);
            processResponseHeaders(state, conn);
            
            int status = this.statusLine.getStatusCode();
            if ((status >= 100) && (status < 200)) {
                if (LOG.isInfoEnabled()) {
                    LOG.info("Discarding unexpected response: " + this.statusLine.toString()); 
                }
                this.statusLine = null;
            }
        }
        readResponseBody(state, conn);
        processResponseBody(state, conn);//此方法为空,可以被子类覆写
    }

 看代码,http头是被httpclient直接处理的,但是body就没有处理了,直接保留了stream没有去读。

分享到:
评论

相关推荐

    commons-httpclient-3.1-rc1.jar ,commons-logging.jar

    总的来说,`commons-httpclient-3.1-rc1.jar`和`commons-logging.jar`这两个库在Java开发中起到了关键作用,它们简化了HTTP通信和日志记录的工作,提高了代码的可读性和可维护性。在实际项目中,这两个库经常与其他...

    commons-httpclient-3.1.jar和commons-codec-1.3.jar

    标题中的"commons-httpclient-3.1.jar"和"commons-codec-1.3.jar"是两个关键的Java库,它们在开发与HTTP协议相关的应用程序时扮演着重要角色。这两个库是Apache Commons项目的一部分,提供了丰富的功能来处理HTTP...

    tomcat httpclient包

    描述中提到的“包括commons-codec-1.3, commons-httpclient-3.1, commons-logging-1.1.1”是指这个包内包含的三个关键依赖库: 1. **Commons Codec 1.3**:这是Apache Commons项目的一个子项目,提供了各种编码和...

    HTTPClient 文档

    提及的文档包含了两个主要版本:`commons-httpclient-3.1.chm` 和 `httpcomponents-client-4.0.1`。`commons-httpclient-3.1` 是较旧的一个版本,属于 Apache Commons HttpClient 项目,而 `httpcomponents-client-4...

    WebApi系列-通过HttpClient来调用WebApi接口.doc

    与POST不同,PUT方法通常需要两个参数:一个标识要更新的资源的ID,另一个是包含新数据的对象。前者通常通过查询字符串传递,后者则通过`FromBody`标记。 示例: ```csharp public IHttpActionResult Put(int id, ...

    commons-httpclient包和ksoap2-android-assembly包

    在您提供的信息中,"commons-httpclient包"和"ksoap2-android-assembly包"正是两个关键的组件,它们分别处理HTTP通信和SOAP协议的解析。 **Apache Commons HttpClient** Apache Commons HttpClient是一个成熟的...

    国产化之银河麒麟.netcore3.1访问https服务的两个问题.doc

    标题和描述中提到的“国产化之银河麒麟.netcore3.1 访问 https 服务的两个问题”主要涉及在银河麒麟操作系统上使用 .NET Core 3.1 进行 HTTPS 通信时遇到的挑战。这两个问题分别是: 1. **无法验证证书的由颁发者...

    commons-httpclient-3.1.0.jar.zip

    在本文中,我们将深入探讨`commons-httpclient-3.1.0.jar`这一版本,它是Apache HttpClient的一个关键里程碑,为开发者提供了丰富的功能来处理HTTP通信。 ## 1. HttpClient简介 HttpClient是Apache软件基金会的...

    Android例子源码httpclient获取到JSON数据并展示到ListView

    例如,如果JSON数组中的每个元素包含"标题"和"内容",则创建一个`MyDataModel`类,包含这两个属性。 5. **填充ListView**: - ListView:ListView是Android中的一个视图组件,用于展示可滚动的列表数据。我们需要...

    网络爬虫JAVA扩展包

    本篇文章将详细讲解标题中提到的"网络爬虫JAVA扩展包",包括其中包含的几个关键组件:`commons-httpclient-3.1.jar`、`htmllexer.jar`和`htmlparser.jar`,以及它们在网络爬虫开发中的作用。 首先,`commons-...

    基于Java HttpClient和Htmlparser实现网络爬虫代码

    在本文中,我们将详细探讨如何利用这两个库来实现一个简单的网络爬虫。 首先,你需要在开发环境中配置好所需的库。对于 Java HttpClient,你需要导入 Commons-httpClient3.1.jar,而对于 HTML 解析,你需要 ...

    新浪腾讯微博安卓开发jar包

    6. **signpost-core-1.2.1.1.jar** 和 **signpost-commonshttp4-1.2.1.1.jar**:这两个是OAuth库的版本,用于处理OAuth认证。在微博API中,OAuth是常见的安全机制,用来授权第三方应用访问用户的信息。Signpost库...

    VoIP呼叫控制与媒体工具包和集成

    这两个库提供了SIP协议栈的实现,使得开发者能够方便地创建和管理SIP会话。 4. **log4j-1.2.8.jar**:这是一个广泛使用的日志记录框架,用于收集和记录应用程序运行时的信息。在VoIP系统开发中,日志记录对于调试和...

    JSON学习笔记

    9. JSON Pointer和JSON Patch:这两个概念可能在高级JSON操作中涉及。JSON Pointer是一个字符串,用于表示JSON文档中的某个特定位置,而JSON Patch则是一组操作,用于修改JSON文档。 通过阅读这篇"JSON学习笔记",...

    datagrid连接hive所需要的全部驱动.zip

    在IT行业中,数据管理和分析是至关重要的,而DataGrid和Hive是两个常见的工具。DataGrid主要用于缓存和分布式计算,而Hive则是一个基于Hadoop的数据仓库系统,用于存储和处理大规模数据集。本篇将详细介绍如何使用...

    Eclipse Activiti jar包

    这个jar包包含了两个关键组件:`org.activiti.designer.libs-5.18.0.jar` 和 `org.activiti.designer.kickstart.eclipse-5.18.0.jar`,它们分别服务于不同的目的。 1. **org.activiti.designer.libs-5.18.0.jar**:...

    json使用介绍系列一.pdf

    - 布尔值(Boolean):有两个值,`true` 和 `false`。 - null:只有一个值 `null`,表示空或无。 在Java中使用JSON,通常需要引入相关的库,如JSON Lib。在上述描述中提到了一系列的jar包,如`commons-lang.jar`,...

    springMVC+MyBatis整合所需jar包合集

    SpringMVC和MyBatis是两个非常流行的Java开发框架,它们在企业级应用开发中扮演着重要的角色。SpringMVC是Spring框架的一部分,主要用于构建Web应用程序的Model-View-Controller结构,而MyBatis则是一个轻量级的持久...

Global site tag (gtag.js) - Google Analytics