httpclient上传文件实际上就是模拟一个http的表单提交请求。
package test.httpclient4;
import java.io.File;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class SendFile {
public static void main(String[] args) throws ClientProtocolException,
IOException {
HttpClient httpclient = new DefaultHttpClient();
//请求处理页面
HttpPost httppost = new HttpPost(
"http://localhost:8080/webtools/upload.jsp");
//创建待处理的文件
FileBody file = new FileBody(new File("d:/22.rar"));
//创建待处理的表单域内容文本
StringBody descript = new StringBody("0431.la");
//对请求的表单域进行填充
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("file", file);
reqEntity.addPart("descript", descript);
//设置请求
httppost.setEntity(reqEntity);
//执行
HttpResponse response = httpclient.execute(httppost);
//HttpEntity resEntity = response.getEntity();
//System.out.println(response.getStatusLine());
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
HttpEntity entity = response.getEntity();
//显示内容
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
if (entity != null) {
entity.consumeContent();
}
}
}
}
这里说明一下 需要一个额外的包,apache 的mime4j 的lib。
就这么简单 over。
Java开发Q群:46176507
分享到:
相关推荐
它提供了类和方法来创建和解析复杂的Multipart MIME消息,这是上传文件或发送包含多个部分的HTTP请求所必需的。 这些jar包通常被集成到Java项目中,用于实现与Web服务的交互,如微信退款服务所提到的场景。微信退款...
Apache Commons HttpClient 是一个高度可定制的HTTP客户端实现,支持从简单的GET请求到复杂的POST操作,包括文件上传、Cookie管理、重定向处理、HTTP认证等。它提供了一个强大的API,使得开发者能够轻松地创建、发送...
除了基本的HTTP请求,HttpClient还支持复杂的请求构造,如设置请求头、携带POST数据、处理文件上传等。同时,它还提供了异常处理机制,使得开发者能够优雅地处理可能出现的网络错误和HTTP状态异常。 总结来说,...
- `httpmime-4.3.6.jar`:支持MIME类型的HTTP请求,例如上传文件。 - `httpclient-cache-4.3.6.jar`:实现了HTTP缓存机制,可以提高性能和减少网络流量。 - `httpcore-nio-4.3.3.jar`:非阻塞I/O的实现,适用于高...
### HttpClient 4 文件上传知识点详解 #### 一、概述 在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了...
- **文件上传下载**:通过POST或PUT方法上传文件,使用GET方法下载文件。 - **模拟登录**:处理登录过程,包括提交表单数据、处理验证码等。 - **自动化测试**:在测试框架中模拟用户行为,测试Web应用的功能。 ...
3. **httpmime-4.5.13.jar**:这个库提供了MIME类型支持,允许HTTPClient处理多部分表单数据和文件上传。这对于发送复杂的POST请求,尤其是涉及到上传文件的场景非常有用。 4. **httpasyncclient-4.1.4.jar**:...
这个库扩展了HttpClient,使其能够处理MIME类型的请求和响应,比如上传文件或处理multipart/form-data请求。 3. `httpclient-cache-4.x.jar`:这个模块提供了HTTP缓存功能,可以根据HTTP缓存规范存储和检索已请求的...
4. **强大的请求和响应处理**:支持 GET、POST、PUT、DELETE 等多种请求方法,以及丰富的头信息和请求体处理,包括文件上传、JSON 数据传递等。 5. **重试和恢复策略**:HttpClient 可以配置重试策略,自动处理常见...
3. **httpmime-4.5.13.jar**:这个库专门用于处理HTTP请求中的MIME类型数据,特别是当需要发送复杂或二进制数据时,如文件上传。它提供了MultipartEntityBuilder类,可以方便地构造包含多个部分的POST请求,每部分...
标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...
4.3.5版本提供了对MIME类型的解析和创建,支持复杂表单提交、文件上传、多部分/边界编码等。在进行Web服务调用,尤其是涉及文件传输时,HttpMime扮演了关键角色。 在实际开发中,这三者通常一起使用。HttpCore提供...
HttpMime 4.2.5提供了`MultipartEntity`和`MultiPartFormDatEntity`类,用于构建多部分/形式数据的HTTP实体,这些在进行Web服务调用或文件上传时非常有用。 将这三个库结合使用,开发者可以构建出强大且灵活的HTTP...
httpmime-4.3.1.jar则专注于处理HTTP消息体中的MIME类型数据,比如上传文件、处理多部分表单数据等。这个组件扩展了HttpClient的能力,使其能方便地处理复杂的HTTP请求,如POST请求中包含文件或复杂表单数据的情况。...
在图片上传中,开发者可能利用HttpClient来发起POST请求,将图片数据作为请求体发送到服务器。 3. **commons-logging-1.1.jar**:这个JAR文件是Apache Commons Logging库的1.1版本。Logging库提供了一个接口层,...
System.out.println("文件上传失败,状态码:" + statusCode); } // 释放连接资源 postMethod.releaseConnection(); ``` 在这个例子中,我们创建了一个`PostMethod`,设置了上传文件的URL,并创建了一个`FilePart...
综上所述,HTTPClient和RESTful风格的文件上传下载在Java分布式系统中具有广泛应用。通过HTTPClient实现HTTP请求,利用RESTful接口定义清晰的操作方式,可以构建高效、灵活的文件传输方案。同时,理解并遵循良好的...
- **多部分上传**:内置对 HTTP 多部分请求的支持,方便进行文件上传或其他复杂的数据提交。 4. **使用示例** 创建一个 GET 请求: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ...
在Java编程中,Apache HttpClient库是一个非常常用的工具,用于...以上就是使用Apache HttpClient进行文件上传的基本流程和技术细节,以及相关的Servlet处理部分。在实际开发中,还需要根据具体需求进行调整和优化。