`

HttpClient4.5.2 快速API

阅读更多

原文链接:http://www.yeetrack.com/?p=832

 

5.1.Easy to use facade API

HttpClient从4.2开始支持快速api。快速api仅仅实现了HttpClient的基本功能,它只要用于一些不需要灵活性的简单场景。例如,快速api不需要用户处理连接管理和资源释放。

下面是几个使用快速api的例子:

// 执行一个get方法,设置超时时间,并且将结果变成字符串
Request.Get("http://www.yeetrack.com/")
    .connectTimeout(1000)
    .socketTimeout(1000)
    .execute().returnContent().asString();

// 使用HTTP/1.1,通过'expect-continue' handshake来执行post方法
// 内容包含一个字符串,并且将结果转化成byte数组
Request.Post("http://www.yeetrack.com/do-stuff")
    .useExpectContinue()
    .version(HttpVersion.HTTP_1_1)
    .bodyString("Important stuff", ContentType.DEFAULT_TEXT)
    .execute().returnContent().asBytes();

// 通过代理服务器来执行一个带有特殊header的post请求,post请求中带有form表单,
// 并且将返回结果写入文件
Request.Post("http://www.yeetrack.com/some-form")
.addHeader("X-Custom-header", "stuff")
.viaProxy(new HttpHost("myproxy", 8080))
.bodyForm(Form.form().add("username","vip").add("password","secret").build())
.execute().saveContent(new File("result.dump"));

如果需要在指定的安全上下文中执行某些请求,我们也可以直接使用Exector,这时候用户的认证信息就会被缓存起来,以便后续的请求使用。

Executor executor = Executor.newInstance()
            .auth(new HttpHost("somehost"), "username", "password")
            .auth(new HttpHost("myproxy", 8080), "username", "password")
            .authPreemptive(new HttpHost("myproxy", 8080));

    executor.execute(Request.Get("http://somehost/"))
            .returnContent().asString();

    executor.execute(Request.Post("http://somehost/do-stuff")
            .useExpectContinue()
            .bodyString("Important stuff", ContentType.DEFAULT_TEXT))
            .returnContent().asString();

 

5.1.1.响应处理

一般情况下,HttpClient的快速api不用用户处理连接管理和资源释放。但是,这样的话,就必须在内存中缓存这些响应消息。为了避免这一情况,建议使用使用ResponseHandler来处理Http响应。

Document result = Request.Get("http://somehost/content")
   .execute().handleResponse(new ResponseHandler<Document>() {
   public Document handleResponse(final HttpResponse response) 
        throws IOException {
        StatusLine statusLine = response.getStatusLine();
        HttpEntity entity = response.getEntity();
        if (statusLine.getStatusCode() >= 300) {
            throw new HttpResponseException(
                    statusLine.getStatusCode(),
                    statusLine.getReasonPhrase());
        }
        if (entity == null) {
            throw new ClientProtocolException("Response contains no content");
        }
        DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
            ContentType contentType = ContentType.getOrDefault(entity);
            if (!contentType.equals(ContentType.APPLICATION_XML)) {
                throw new ClientProtocolException("Unexpected content type:" +
                    contentType);
            }
            String charset = contentType.getCharset();
            if (charset == null) {
                charset = HTTP.DEFAULT_CONTENT_CHARSET;
            }
            return docBuilder.parse(entity.getContent(), charset);
        } catch (ParserConfigurationException ex) {
            throw new IllegalStateException(ex);
        } catch (SAXException ex) {
            throw new ClientProtocolException("Malformed XML document", ex);
        }
    }
});

 

 

分享到:
评论

相关推荐

    httpclient-4.5.2-API文档-中英对照版.zip

    赠送原API文档:httpclient-4.5.2-javadoc.jar; 赠送源代码:httpclient-4.5.2-sources.jar; 包含翻译后的API文档:httpclient-4.5.2-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org....

    httpclient-4.5.2.jar.zip

    HttpClient 4.5.2是这个库的一个稳定版本,带来了诸多改进和优化。本文将深入探讨HttpClient 4.5.2的核心特性、使用方法以及实际应用中的关键点。 1. HttpClient 4.5.2概述: HttpClient 4.x系列是Apache基金会开发...

    httpclient-4.5.2-API文档-中文版.zip

    赠送原API文档:httpclient-4.5.2-javadoc.jar; 赠送源代码:httpclient-4.5.2-sources.jar; 包含翻译后的API文档:httpclient-4.5.2-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache....

    httpclient-4.5.2.jar

    《深入理解HTTPClient 4.5.2及依赖库》 在Java开发中,与HTTP通信密切相关的一个重要库就是Apache HttpClient。本篇文章将详细解析`httpclient-4.5.2.jar`及其关联的依赖库,包括`httpcore-4.4.4.jar`、`commons-...

    httpclient-4.5.2.jar安卓网络请求

    可以将`httpclient4.5.2.jar`文件导入到项目的libs目录下,然后在`build.gradle`文件中添加如下代码: ```groovy dependencies { implementation files('libs/httpclient4.5.2.jar') } ``` 2. 创建HttpClient实例:...

    HTTPClient4.5.2

    总的来说,`HTTPClient 4.5.2` 是一个强大的工具,它提供了一套全面的API来处理HTTP通信,适用于各种Java应用程序,从简单的Web爬虫到复杂的RESTful服务消费者。它的灵活性和可扩展性使其成为Java开发者的首选HTTP...

    httpcomponents-client-4.5.2-src

    《HttpClient 4.5.2 源码分析与应用》 HttpClient 是 Apache 开源组织提供的一个用于执行 HTTP 请求的 Java 库,广泛应用于各种网络编程任务,包括数据抓取、自动化测试、API 调用等。HttpClient 4.5.2 版本是其...

    httpcomponents-client-4.5.2

    3. **异步操作**:HttpClient 4.5.2 提供了异步客户端 API,允许并发执行多个请求,提高应用程序的并发性和响应速度。 4. **安全通信**:HttpClient 支持 SSL/TLS 协议,可进行安全的 HTTPS 连接,并提供多种认证...

    HttpClient 4.52

    - HttpClient是基于Java的HTTP客户端API,它支持HTTP/1.1和部分HTTP/2协议。 - 它提供了丰富的功能,包括但不限于:GET、POST、PUT、DELETE等HTTP方法,连接管理,自动处理重定向,支持Cookie,支持HTTP认证等。 ...

    httpclient-log4g相关jar包

    HTTPClient 4.5.2 是一个成熟的HTTP客户端API,由Apache软件基金会开发并维护。它提供了丰富的功能,如支持HTTP/1.1协议、连接管理、多线程处理、重定向处理、请求和响应的解析等。这个版本的更新可能包含了性能优化...

    httpclient.jar

    HttpClient是Apache软件基金会的一个开源项目,其主要目标是提供一个基于Java语言的、功能强大且可扩展的HTTP客户端API。它支持各种HTTP方法(如GET、POST、PUT、DELETE等),能够处理Cookie、处理HTTP代理,支持...

    httpclient

    在本压缩包中,主要包含的文件是`httpcomponents-client-4.5.2`,这是一个包含HttpClient库所有类和资源的JAR文件。 使用HttpClient库时,首先需要将其添加到项目的类路径中。对于Maven项目,可以在pom.xml文件中...

    Java-HttpClient帮助文档

    Java HttpClient是Apache软件基金会的Apache HTTP Components项目中的一个核心组件,它提供了一个强大的、高度可定制的客户端HTTP通信API。这个工具广泛应用于Java开发者中,用于执行HTTP请求,获取响应,处理各种...

    httpclient和httpmime的jar包

    HttpClient 4.5.2是该库的一个稳定版本,修复了之前版本的一些问题,并增加了新的特性。 2. **HttpMime模块**: 这个模块专门设计用于处理MIME类型的数据,如在HTTP请求中常见的multipart/form-data格式。在Web表单...

    httpclient4.5 绕过ssl认证文件访问

    3. **配置HttpClient**:将自定义的SSLContext应用到HttpClient的HttpConnectionFactory。 ```java import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache....

    java 中HttpClient传输xml字符串实例详解

    HttpPost httpPost = new HttpPost("http://example.com/api"); httpPost.setEntity(inputStreamEntity); CloseableHttpResponse response = httpclient.execute(httpPost); try { // 处理响应... } finally { ...

    httpClient接口开发所需jar包

    httpClient接口开发所需jar包,包含httpclient-4.5.2.jar,httpcore-4.4.4.jar,httpcore-4.4.4.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar,commons-logging-api-1.1.jar,xfire-all-1.2.6.jar,...

    httpclient-4.5所需jar包 httpcomponents-client-4.5.12-bin.zip

    9. **jna-4.5.2.jar** 和 **jna-platform-4.5.2.jar**:Java Native Access (JNA) 是一个Java库,允许与本机平台API交互,这些库可能是HTTPClient在某些情况下与操作系统交互时需要的。 这些JAR文件一起构成了一个...

    tomcatmanager.jar

    使用httpclient 4.5.2开发的包,只有一个功能,带凭据方式发送http请求,调用格式:java -jar tomcatmanager.jar ip username password 例如在卸载部署在tomcat的项目时候调用tomcatmanager api时候的例子: java...

Global site tag (gtag.js) - Google Analytics