`
tuxq5721
  • 浏览: 34661 次
社区版块
存档分类
最新评论

HttpComponents —— HTTP请求(HttpRequest)

阅读更多

目录:

 

 

 

         所有HTTP请求有一个组合了方法名,请求URIHTTP协议版本的请求行。

        HttpClient支持所有定义在HTTP/1.1版本中的HTTP方法:GETHEADPOSTPUTDELETETRACEOPTIONS。对于每个方法类型都有一个特殊的类:HttpGetHttpHeadHttpPostHttpPutHttpDeleteHttpTraceHttpOptions

 

请求的URI

 

        请求的URI是统一资源定位符,它标识了应用于哪个请求之上的资源。HTTP请求URI包含一个协议模式,主机名称,可选的端口,资源路径,可选的查询和可选的片段。

HttpClient提供很多工具方法来简化创建和修改执行URI。URI也可以编程来拼装:

URIBuilder builder =new URIBuilder();

builder.setScheme("http");           // http://

builder.setHost("www.baidu.com");    // www.baidu.com

builder.setPath("/s");               // /s

builder.setFragment("foo");          // #foo

builder.setQuery("wd=查询测试");      // ?wd=查询测试

//http://www.baidu.com/s?wd=查询测试#foo

System.out.println(builder.build());

查询字符串也可以从独立的参数中来生成:

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

qParams.add(new BasicNameValuePair("wd","测试查询"));

URI uri =new URI("http://www.baidu.com/s ?"

+ URLEncodedUtils.format(qParams, "GBK"));

HttpGet httpget =new HttpGet(uri);

System.out.println(httpget.getURI());

 

HTTP请求拦截器

        HTTP协议拦截器是一个实现了特定HTPP协议方面的惯例。通常协议拦截器希望作用于一个特定头部信息上,或者一族收到报文的相关头部信息,或使用一个特定的头部或一族相关的头部信息填充发出的报文。协议拦截器也可以操纵包含在报文中的内容实体,透明的内容压缩/解压就是一个很好的示例。通常情况下这是由包装器实体类使用了“装饰者”模式来装饰原始的实体完成的。一些协议拦截器可以从一个逻辑单元中来结合。

        协议拦截器也可以通过共享信息来共同合作-比如处理状态-通过HTTP执行上下文。协议拦截器可以使用HTTP内容来为一个或多个连续的请求存储一个处理状态。

        通常拦截器执行的顺序不应该和它们基于的特定执行上下文状态有关。如果协议拦截器有相互依存关系,那么它们必须按特定顺序来执行,正如它们希望执行的顺序一样,它们应该在相同的序列中被加到协议处理器。

        协议拦截器必须实现为线程安全的。和Servlet相似,协议拦截器不应该使用实例变量,除非访问的那些变量是同步的。

 

这个示例给出了本地内容在连续的请求中怎么被用于持久一个处理状态的:

DefaultHttpClient client =new DefaultHttpClient();

HttpContext localContext =new BasicHttpContext();

AtomicInteger count =new AtomicInteger(1);

localContext.setAttribute("count", count);

client.addRequestInterceptor(new HttpRequestInterceptor() {

public void process(final HttpRequest request,final HttpContext context)

throws HttpException, IOException {

AtomicInteger count = (AtomicInteger) context.getAttribute("count");

request.addHeader("Count", Integer.toString(count.getAndIncrement()));

}

});

 

HttpGet httpget =new HttpGet("http://localhost/");

for (int i = 0; i < 10; i++) {

HttpResponse response = client.execute(httpget, localContext);

HttpEntity entity = response.getEntity();

if (entity != null) {

EntityUtils.consume(entity);

}

}

分享到:
评论

相关推荐

    apache-httpcomponents-httpmime.jar

    apache-httpcomponents-httpmime.jar

    apache-httpcomponents-httpcore.jar.zip官网下的解压可用

    2. 请求与响应处理:HTTPCore定义了HttpRequest和HttpResponse接口,用于表示HTTP请求和响应。这些接口提供了对HTTP方法、状态码、头部和实体内容的访问。通过HttpEntity抽象类,可以处理各种类型的数据,如文本、...

    httpcomponents-client包下载

    2. 构建HttpRequest对象:例如,HttpGet用于发起GET请求,HttpPost用于POST请求,你可以指定请求的目标URL。 3. 设置请求头和参数:HttpClient允许你添加自定义的请求头,也可以通过EntityEnclosingRequest接口设置...

    org.apache.http相关jar包下载(httpcomponents-client-4.2.5-bin.tar)

    在标题提到的`httpcomponents-client-4.2.5-bin.tar`中,我们找到了Apache HttpClient的特定版本4.2.5的二进制分发包,它通常包含了一系列的JAR文件,用于支持网络爬虫和其他需要与HTTP服务器交互的应用程序。...

    java-http请求jar包

    Java发送HTTP请求是进行网络通信的基本操作之一,广泛应用于数据获取、API调用等场景。在Java中,Apache HttpClient库是一个强大的工具,它允许开发者高效、灵活地处理HTTP请求。这个"java-http请求jar包"实际上就是...

    HttpClient发送http请求需要的jar包

    HttpClient是Apache基金会开发的一个Java库,用于执行HTTP请求。它为开发者提供了强大的功能,包括连接管理、重试策略、请求和响应处理等。在Java应用中,如果你需要发送HTTP请求,HttpClient是一个非常实用的选择。...

    HttpComponents

    HttpComponents 用法解析 Java 模拟浏览器发送请求 HttpComponents 是一个开源的 Java 库,用于提供一个强有力的 HTTP 协议支持,帮助用户创建基于 HTTP 协议的客户和服务程序。它包含多个模块,包括 HttpCore、...

    安卓Android源码——http1.rar

    HttpClient在Android源码中主要由Apache的HttpComponents库提供,虽然在新版本中被弃用,但其在网络请求的灵活性和可定制性方面具有优势。在`http1.rar`中,我们可以找到关于HttpClient的使用示例和关键类的实现,...

    httpcomponents-client-4.5.5 jar包

    在Java开发中,HTTPComponents Client是常用于实现HTTP客户端请求的工具包,其版本4.5.5是一个广泛使用且稳定可靠的版本,具有丰富的功能和良好的性能。 一、HTTPComponents Client简介 HTTPComponents Client是...

    httpcomponents-core-4.2.1 httpcomponents-client-4.2 httpcore4.2

    这些基本的示例展示了如何使用HttpComponents来执行HTTP请求并处理响应。在实际应用中,你可以根据需要配置HttpClient,例如设置超时、添加自定义拦截器等。 总之,Apache HttpComponents是一个强大的工具集,广泛...

    httpmime-4.5.13-API文档-中文版.zip

    标签:apache、httpcomponents、httpmime、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    httpmime-4.5.13-API文档-中英对照版.zip

    标签:apache、httpcomponents、httpmime、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...

    httpcore-4.4.14-API文档-中文版.zip

    标签:apache、httpcomponents、httpcore、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    httpcore-4.4.6-API文档-中文版.zip

    标签:apache、httpcomponents、httpcore、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    org.apache.HTTP需要的jar包

    主要类有`HttpClientConnectionManager`(管理HTTP连接)、`HttpRequest`和`HttpResponse`(表示HTTP请求和响应的抽象)以及`HttpEntityEnclosingRequestBase`(用于支持带有实体内容的HTTP请求)。 标签"HTTP"和...

    httpcomponents jar包

    1. HttpClient:这是HTTPComponents的核心部分,提供了一种用于执行HTTP请求并处理响应的API。HttpClient支持各种HTTP方法(如GET、POST、PUT等),可以处理重定向、身份验证、连接管理等复杂场景。通过HttpClient,...

    httpcomponents-core-4.2.3-src

    `org.apache.http`包下的`HttpRequest`和`HttpResponse`接口分别代表了HTTP请求和响应。`HttpGet`, `HttpPost`等类是它们的具体实现,对应不同的HTTP方法。同时,`HttpEntity`接口定义了HTTP实体,用于封装请求或...

    httpcomponents

    《HTTP组件详解——聚焦于Apache HttpComponents》 在IT领域,HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,而Apache HttpComponents则是处理HTTP请求与响应的首选工具包。本篇文章将深入探讨...

    模拟Http请求

    Apache HttpClient是Apache HttpComponents项目的一部分,它提供了一套高级API用于发送HTTP请求,并处理响应。该库支持多种HTTP请求方式,包括GET、POST等,并提供了丰富的配置选项,如设置连接超时时间、读取超时...

Global site tag (gtag.js) - Google Analytics