`
hao861002
  • 浏览: 87385 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpClient 学习整理(4)

阅读更多

5 提交XML格式参数

提交XML格式的参数很简单,仅仅是一个提交时候的ContentType问题,下面的例子演示从文件文件中读取XML信息并提交给服务器的过程,该过程可以用来测试Web服务。

import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
import org.apache.commons.httpclient.methods.PostMethod;

/** 
 *用来演示提交XML格式数据的例子
*/

public class PostXMLClient {

   public
static void main(String[] args) throws Exception {
      File input =
new File(“test.xml”);
      PostMethod post =
new PostMethod(“http://localhost:8080/httpclient/xml.jsp”);

      // 设置请求的内容直接从文件中读取
      post.setRequestBody( new FileInputStream(input)); 
      if (input.length() < Integer.MAX_VALUE)
         post.setRequestContentLength(input.length());
      else
         post.setRequestContentLength(EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED);

      // 指定请求内容的类型
      post.setRequestHeader( "Content-type" , "text/xml; charset=GBK" );
      HttpClient httpclient = new HttpClient();
      int result = httpclient.executeMethod(post);
      System.out.println(
"Response status code: " + result);
      System.out.println(
"Response body: " );
      System.out.println(post.getResponseBodyAsString()); 
      post.releaseConnection(); 
   }
}

6 通过HTTP上传文件

httpclient使用了单独的一个HttpMethod子类来处理文件的上传,这个类就是MultipartPostMethod,该类已经封装了文件上传的细节,我们要做的仅仅是告诉它我们要上传文件的全路径即可,下面的代码片段演示如何使用这个类。

MultipartPostMethod filePost = new MultipartPostMethod(targetURL);
filePost.addParameter(
"fileName" , targetFilePath);
HttpClient
client = new HttpClient();

// 由于要上传的文件可能比较大 , 因此在此设置最大的连接超时时间
client.getHttpConnectionManager(). getParams().setConnectionTimeout(5000);
int status = client.executeMethod(filePost);

上面代码中,targetFilePath即为要上传的文件所在的路径。

7 访问启用认证的页面

我们经常会碰到这样的页面,当访问它的时候会弹出一个浏览器的对话框要求输入用户名和密码后方可,这种用户认证的方式不同于我们在前面介绍的基于表单的用户身份验证。这是HTTP的认证策略,httpclient支持三种认证方式包括:基本、摘要以及NTLM认证。其中基本认证最简单、通用但也最不安全;摘要认证是在HTTP 1.1中加入的认证方式,而NTLM则是微软公司定义的而不是通用的规范,最新版本的NTLM是比摘要认证还要安全的一种方式。

下面例子是从httpclientCVS服务器中下载的,它简单演示如何访问一个认证保护的页面:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.methods.GetMethod;

public class BasicAuthenticationExample { 

   public BasicAuthenticationExample() { 
   }

   public static void main(String[] args) throws Exception {
      HttpClient client =
new HttpClient();
      client.getState().setCredentials(
"www.verisign.com" , "realm" , new UsernamePasswordCredentials( "username" , "password" ) );

      GetMethod get =
new GetMethod( "https://www.verisign.com/products/index.html" );
      get.setDoAuthentication(
true );
      int status = client.executeMethod( get );
      System.out.println(status+
"\n" + get.getResponseBodyAsString());
      get.releaseConnection();
   }
}

8 多线程模式下使用httpclient

多线程同时访问httpclient,例如同时从一个站点上下载多个文件。对于同一个HttpConnection同一个时间只能有一个线程访问,为了保证多线程工作环境下不产生冲突,httpclient使用了一个多线程连接管理器的类:MultiThreadedHttpConnectionManager,要使用这个类很简单,只需要在构造HttpClient实例的时候传入即可,代码如下:

MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();

HttpClient client = new HttpClient(connectionManager);

以后尽管访问client实例即可。

分享到:
评论

相关推荐

    HttpClient3.1 学习整理

    HttpClient3.1 是一个由Apache Jakarta Commons开发的Java库,用于...然而,随着HttpClient的版本更新,建议使用更现代的版本,如HttpClient4.x或4.5.x,因为它们包含了更多优化和新特性,以适应不断发展的网络环境。

    HttpClient_学习整理.

    ### HttpClient 学习整理 #### 一、简介 `HttpClient`是Apache Jakarta Commons下的一个子项目,用于提供高效、最新及功能丰富的HTTP客户端编程工具包。对于那些希望通过HTTP协议访问网络资源的Java应用程序而言,...

    httpclient4中文API和使用

    首先,`httpclient4中文API.pdf`是HttpClient 4.5的中文版API文档,是学习和使用HttpClient的重要参考资料。这个文档通常会包含HttpClient的类结构、接口、方法等详细信息,以及如何使用这些API来构建HTTP请求的示例...

    JAVA核心知识点整理 全面整理.zip

    - **HTTP客户端**: 学习使用HttpURLConnection或HttpClient库发送HTTP请求并处理响应。 7. **反射机制** - **Class对象**: 理解如何获取类的信息,包括类名、方法、属性等。 - **动态代理**: 探究如何在运行时...

    最近在学习常用的Java开源项目,整理一下常用的代码.zip

    以下是对"最近在学习常用的Java开源项目,整理一下常用的代码.zip"这个压缩包中可能包含的知识点的详细解释: 1. **Maven或Gradle构建工具**:Java项目通常使用Maven或Gradle进行构建和依赖管理。通过查看项目的pom...

    基于Java的工具类学习项目.zip

    本项目是一个基于Java的工具类学习项目,旨在整理和演示各种工具类的使用方法。项目涵盖了从Excel处理、HTTP请求、JSON序列化到高性能网络框架Netty的使用等多个方面。通过本项目,开发者可以学习到如何使用这些工具...

    源码 网站交互&JSON&xml&Webservice 通过httpclient获取到JSON数据展示到ListView

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    安卓开发工具箱v2.8.5高级版.txt打包整理.zip

    "apache"可能指的是Apache开源项目,或者是使用了Apache相关的技术,例如Apache HttpClient或Apache Ant等,这些在Android开发中常见且重要。而"#资源达人分享计划#"可能是一个社区活动或者论坛的标签,表示这是由...

    安卓京东2022自动炸年兽v2.0.txt打包整理.zip

    4. **自动化工具开发**:自动炸年兽工具可能利用了定时任务、事件监听、模拟用户操作等技术,如使用 Espresso 或 Appium 进行UI自动化测试。 5. **API接口使用**:可能需要调用京东的API接口来完成特定任务,这就...

    安卓点击助手v12.8绿化版.txt打包整理.zip

    4. **安卓自动化**:安卓点击助手可能涉及到自动化功能,如模拟点击、滑动等,学习如何编写自动化脚本,利用安卓设备的API实现自动化任务。 5. **利用应用赚钱**:探索利用安卓应用进行赚钱的策略,如参与广告点击...

    FaceLook项目源码整理

    - **机器学习库**:如TensorFlow for Java、Deeplearning4j等,如果项目包含深度学习组件,可能会用到这些库进行模型训练和预测。 - **框架和库**:Spring Boot、MyBatis等,用于构建高效稳定的后端服务。 - **...

    Java手机短信项目源码Java实用源码整理learns

    这是一份实用的源码整理,对于想要深入学习Java编程,特别是对Java在实际项目中的运用感兴趣的开发者来说,是非常有价值的参考资料。 1. **短信服务接口**:在Java项目中,通常会定义一个短信服务接口,这个接口...

    轻松上手Java爬虫:CSDN文章抓取与整理.zip

    在本压缩包中,你将找到一个Java实现的CSDN文章抓取与整理的项目,这将是一个很好的起点来学习和实践Java爬虫技术。 首先,了解Java爬虫的基础是必不可少的。Java作为一种流行的编程语言,拥有强大的网络处理库,如...

    安卓可抖视v1.2.9免费版.txt打包整理.zip

    【标题解析】 "安卓可抖视v1.2.9免费版.txt打包...对于开发者而言,这个压缩包是一个学习和参考的宝贵资源,涵盖了实际开发中的多个方面,从编程语言到应用设计,再到商业运营,都是提升技能和了解行业趋势的重要途径。

    C#基类整理C#比较全的基类集合

    这个压缩包文件“C#基类整理C#比较全的基类集合”可能包含了一系列C#基础类的代码示例和解释,帮助开发者理解和运用这些类。 首先,我们来看一下C#中的几个关键基类: 1. **System.Object**:所有C#类的终极基类,...

    Java核心知识点整理.rar

    这份"Java核心知识点整理.rar"压缩包包含了对Java语言全面而深入的总结,对于初学者和有一定经验的开发者来说,都是宝贵的参考资料。下面,我们将详细探讨Java的核心知识点,并按照一个合理的学习路线进行阐述。 1....

    本人整理的一些常用的c#代码

    这个压缩包“本人整理的一些常用的c#代码”显然是一个针对初学者的学习资源集合,包含了各种实用的C#代码示例,旨在帮助新手快速掌握编程基础。 1. **基础语法**:C#的基础语法结构包括变量声明、数据类型(如int、...

    Java常用代码整理

    4. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等是Java集合框架的重要组成部分。它们用于存储和操作对象数组,了解它们的特性和应用场景是高效编程的关键。 5. **IO流**:Java的输入输出流系统允许...

    java+http+操作cookies源码整理

    4. **管理Cookies**: 如果有多个Cookies,通常需要一个容器来管理它们。可以使用`CookieStore`接口(`java.net.CookieManager`的`getCookieStore()`方法)来存储和检索Cookies: ```java CookieManager manager ...

    java及php计开发资料整理

    这份"java及php计开发资料...这份资料整理涵盖了Java和PHP的基础到进阶内容,对于开发者来说,无论是学习新技能还是提升现有能力,都将大有裨益。通过深入学习和实践这些知识点,可以成为一名优秀的Java或PHP开发者。

Global site tag (gtag.js) - Google Analytics