HTTP-CLIENT支持的上传类型

1. 概述

本教程我们将描述如何使用HttpClient 4进行一次多文件上传操作.

我们将使用 http://echo.200please.com 作为测试服务器,因为它是面向公众的,并且接受大多数类型的内容.

如果你想要深入学习并了解你可以使用 HttpClient 做到的其它很棒的事情 – 那就去看看首要的 HttpClient 教程吧 .

2. 使用 AddPart 方法

让我们开始研究研究 MultipartEntityBuilder 对象,来向一个Http实体添加成分,它在稍后将会被通过一个POST操作上传.

这是向一个HttpEntity添加成分来表示表单的一般方法.

示例 2.1. - 使用两个文本成分和一个文件上传一个表单

File file = new File(textFileName, ContentType.DEFAULT_BINARY);
HttpPost post = new HttpPost("http://echo.200please.com");
FileBody fileBody = new FileBody(file);
StringBody stringBody1 = new StringBody("Message 1", ContentType.MULTIPART_FORM_DATA);
StringBody stringBody2 = new StringBody("Message 2", ContentType.MULTIPART_FORM_DATA);
// 
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("upfile", fileBody);
builder.addPart("text1", stringBody1);
builder.addPart("text2", stringBody2);
HttpEntity entity = builder.build();
//
post.setEntity(entity);
HttpResponse response = client.execute(post);

 

请注意我们也通过制定将会被服务器使用到的ContentType值来实例化File对象.

同样还请注意 addPart 方法有两个参数,作用就像是表单的键值对 . 除非服务器端实际需要这些值并使用了这些参数名称,它们就是有干系的,否则它们就会被简单的忽略掉.

 

3. 使用 addBinaryBody 和 addTextBody 方法

创建一个multipart实体更直接的方式就是使用 addBinaryBody 和 AddTextBody  方法. 这些方法服务于上传文本,文件,字符数组和 InputStream 对象. 我们用了一个简单的例子来描述如何使用它们 .

示例 3.1. - 上传一个文本和一个文本文件部分

HttpPost post = new HttpPost("http://echo.200please.com");
File file = new File(textFileName);
String message = "This is a multipart post";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("upfile", file, ContentType.DEFAULT_BINARY, textFileName);
builder.addTextBody("text", message, ContentType.DEFAULT_BINARY);
// 
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);

 

注意这里不需要 FileBody 和 StringBody 对象

同样重要的是,大多数服务器不会检查文本体的 ContentType , 因此 addTextBody 方法可能会忽略掉 ContentType 值 .

 addBinaryBody 的 API 接受一个 ContentType - 但是它也有可能从一个二进制体来创建实体,而对应名称的表单参数持有了这个文件. 如前面小节所述,如果ContentType值没有被指定,一些服务器将不会识别这个文件.

 

接下来,我们将一个zip文件作为一个 InputStream 添加进来, 而图片文件将会被作为File对象被添加进来:

示例 3.2. - 上传一个Zip文件,一个图片文件和一个文本块

HttpPost post = new HttpPost("http://echo.200please.com");
InputStream inputStream = new FileInputStream(zipFileName);
File file = new File(imageFileName);
String message = "This is a multipart post";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();         
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody
  ("upfile", file, ContentType.DEFAULT_BINARY, imageFileName);
builder.addBinaryBody
  ("upstream", inputStream, ContentType.create("application/zip"), zipFileName);
builder.addTextBody("text", message, ContentType.TEXT_PLAIN);
// 
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);

 

请注意ContentType值可以被动态创建,正如上面这个针对zip文件的示例中所示 .

最后,不是所有的服务器都接受 InputStream 部分. 我们在代码的第一行实体化的服务器可以接受 .

让我们现在来看看另外一个示例, addBinaryBody直接用于一个位数组 :

示例 3.3. - 上传一个位数组和文本

HttpPost post = new HttpPost("http://echo.200please.com");
String message = "This is a multipart post";
byte[] bytes = "binary code".getBytes(); 
// 
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("upfile", bytes, ContentType.DEFAULT_BINARY, textFileName);
builder.addTextBody("text", message, ContentType.TEXT_PLAIN);
// 
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);

 

留意ContentType - 它现在被指定为二进制数据.

4. 总结

本文呈现了 MultipartEntityBuilder 作为一个灵活的对象提供了创建一个 multipart 表单多种API.

示例同样也展示了如何使用HttpClient上传一个类似于表单实体的HttpEntity .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle Client 11.2.0.4 for Windows 32位和64位版本是Oracle提供的一个数据库客户端软件,可在Windows操作系统上安装和使用。它提供了与Oracle数据库服务器进行通信和交互的功能。 这个客户端软件可通过网盘进行下载和分享。网盘是一种在线存储和共享数据的服务平台,用户可以将文件上传到网盘并生成一个唯一的下载链接,然后通过分享这个链接,其他用户就可以通过点击链接来下载文件。 对于需要使用Oracle数据库的开发人员、管理员或用户来说,下载这个客户端软件非常方便。他们可以从网盘上获得安装文件,并将其安装到自己的Windows电脑中。 安装完成后,用户可以使用Oracle Client 11.2.0.4软件连接到远程的Oracle数据库服务器,进行各种数据库操作,包括查询、插入、更新、删除等。 这个客户端软件有32位和64位两个版本,用户需要根据自己的操作系统选择合适的版本进行下载和安装。32位版本适用于运行在32位Windows操作系统上的计算机,而64位版本适用于64位Windows操作系统上的计算机。 总之,Oracle Client 11.2.0.4 for Windows 32位和64位版本是一款用于连接和操作Oracle数据库的客户端软件,用户可以通过网盘来获取安装文件,并在Windows操作系统上使用。 ### 回答2: Oracle Client 11.2.0.4是Oracle公司开发的一款数据库客户端软件,用于连接和访问Oracle数据库。该软件可在Windows 32位和64位操作系统上运行。 网盘是一种在线存储和共享文件的服务,可以将文件上传到服务器上并从任何地方访问这些文件。这使得用户可以轻松地与其他人共享文件,并且不需要通过电子邮件或其他方式来发送文件。 给出的描述"oracle-client-11-2-0-4-for-windows-32bit-64bit 网盘"意味着有人在网盘上共享了Oracle Client 11.2.0.4的安装文件。通过在网盘上共享这个客户端软件,其他用户可以方便地下载并安装它,以便能够连接和访问Oracle数据库。 使用网盘下载和安装Oracle Client 11.2.0.4有几个好处。首先,网盘提供了方便的下载渠道,用户只需点击下载链接即可获取软件安装文件,无需通过其他方式寻找和下载。其次,网盘上的共享文件可以提供版本的选择,用户可以选择适合自己操作系统类型(32位或64位)的软件版本进行下载。此外,网盘还提供了文件的在线预览和分享功能,用户可以在安装软件之前查看软件的详细信息和说明,并将下载链接分享给其他需要的人。 总之,"oracle-client-11-2-0-4-for-windows-32bit-64bit 网盘"意味着某人在网盘上共享了Oracle Client 11.2.0.4的安装文件,这将为用户提供便利的途径来下载和安装这个数据库客户端软件。 ### 回答3: oracle-client-11-2-0-4-for-windows-32bit-64bit 网盘是一个用于存储和分享 Oracle 11.2.0.4 版本的客户端软件的网络存储空间。 Oracle 客户端是一个用于连接和与 Oracle 数据库进行通信的软件工具。它提供了用于管理和操作数据库的功能和接口。这个特定的版本是为 Windows 操作系统设计的,并且支持 32 位和 64 位的系统。 在这个网盘上,你可以找到 Oracle 客户端的安装文件和相关文档。通过下载和安装这个客户端,你可以在你的计算机上访问和管理 Oracle 数据库。不管你是想进行数据库开发、管理还是其他相关的操作,这个客户端都能满足你的需求。 通过网盘上的分享功能,你可以与其他用户分享这个客户端软件,从而使更多的人可以方便地获得和使用它。你还可以找到一些使用教程和技术支持资源,以帮助你更好地理解和使用这个客户端。 总之,oracle-client-11-2-0-4-for-windows-32bit-64bit 网盘提供了一个方便的方式来获取和分享 Oracle 客户端软件。无论你是对 Oracle 数据库进行开发还是管理,这个客户端都能满足你的需求,并且通过网盘的分享功能,可以让更多的人受益于这个软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值