原文链接: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); } } });
相关推荐
赠送原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是这个库的一个稳定版本,带来了诸多改进和优化。本文将深入探讨HttpClient 4.5.2的核心特性、使用方法以及实际应用中的关键点。 1. HttpClient 4.5.2概述: HttpClient 4.x系列是Apache基金会开发...
赠送原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及依赖库》 在Java开发中,与HTTP通信密切相关的一个重要库就是Apache HttpClient。本篇文章将详细解析`httpclient-4.5.2.jar`及其关联的依赖库,包括`httpcore-4.4.4.jar`、`commons-...
可以将`httpclient4.5.2.jar`文件导入到项目的libs目录下,然后在`build.gradle`文件中添加如下代码: ```groovy dependencies { implementation files('libs/httpclient4.5.2.jar') } ``` 2. 创建HttpClient实例:...
总的来说,`HTTPClient 4.5.2` 是一个强大的工具,它提供了一套全面的API来处理HTTP通信,适用于各种Java应用程序,从简单的Web爬虫到复杂的RESTful服务消费者。它的灵活性和可扩展性使其成为Java开发者的首选HTTP...
《HttpClient 4.5.2 源码分析与应用》 HttpClient 是 Apache 开源组织提供的一个用于执行 HTTP 请求的 Java 库,广泛应用于各种网络编程任务,包括数据抓取、自动化测试、API 调用等。HttpClient 4.5.2 版本是其...
3. **异步操作**:HttpClient 4.5.2 提供了异步客户端 API,允许并发执行多个请求,提高应用程序的并发性和响应速度。 4. **安全通信**:HttpClient 支持 SSL/TLS 协议,可进行安全的 HTTPS 连接,并提供多种认证...
- HttpClient是基于Java的HTTP客户端API,它支持HTTP/1.1和部分HTTP/2协议。 - 它提供了丰富的功能,包括但不限于:GET、POST、PUT、DELETE等HTTP方法,连接管理,自动处理重定向,支持Cookie,支持HTTP认证等。 ...
HTTPClient 4.5.2 是一个成熟的HTTP客户端API,由Apache软件基金会开发并维护。它提供了丰富的功能,如支持HTTP/1.1协议、连接管理、多线程处理、重定向处理、请求和响应的解析等。这个版本的更新可能包含了性能优化...
HttpClient是Apache软件基金会的一个开源项目,其主要目标是提供一个基于Java语言的、功能强大且可扩展的HTTP客户端API。它支持各种HTTP方法(如GET、POST、PUT、DELETE等),能够处理Cookie、处理HTTP代理,支持...
在本压缩包中,主要包含的文件是`httpcomponents-client-4.5.2`,这是一个包含HttpClient库所有类和资源的JAR文件。 使用HttpClient库时,首先需要将其添加到项目的类路径中。对于Maven项目,可以在pom.xml文件中...
Java HttpClient是Apache软件基金会的Apache HTTP Components项目中的一个核心组件,它提供了一个强大的、高度可定制的客户端HTTP通信API。这个工具广泛应用于Java开发者中,用于执行HTTP请求,获取响应,处理各种...
HttpClient 4.5.2是该库的一个稳定版本,修复了之前版本的一些问题,并增加了新的特性。 2. **HttpMime模块**: 这个模块专门设计用于处理MIME类型的数据,如在HTTP请求中常见的multipart/form-data格式。在Web表单...
3. **配置HttpClient**:将自定义的SSLContext应用到HttpClient的HttpConnectionFactory。 ```java import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache....
HttpPost httpPost = new HttpPost("http://example.com/api"); httpPost.setEntity(inputStreamEntity); CloseableHttpResponse response = httpclient.execute(httpPost); try { // 处理响应... } finally { ...
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,...
9. **jna-4.5.2.jar** 和 **jna-platform-4.5.2.jar**:Java Native Access (JNA) 是一个Java库,允许与本机平台API交互,这些库可能是HTTPClient在某些情况下与操作系统交互时需要的。 这些JAR文件一起构成了一个...
使用httpclient 4.5.2开发的包,只有一个功能,带凭据方式发送http请求,调用格式:java -jar tomcatmanager.jar ip username password 例如在卸载部署在tomcat的项目时候调用tomcatmanager api时候的例子: java...