compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1'
compile group: 'commons-io', name: 'commons-io', version: '2.5'
compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.3.6'
compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.6'
// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.2'
package com.cloud.test;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
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.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class HttpFilePost {
public static void main(String[] args) {
//上传文件
String fileName ="d:/123456.txt";
HttpFilePost json = new HttpFilePost();
String url ="http://localhost:8080/cloud_server/nocheck/file/agree.do";
//pic1,pic2,zip 上传文件 from 中的名称
try {
Map<String,String> map = new HashMap<String,String>();
map.put("pic1", fileName);
//map.put("pic2", fileName);
//map.put("zip", fileName);
//pickupId 文本框名称
Map<String,String> param = new HashMap<String,String>();
param.put("status", "4");
param.put("pickupId", "104993");
param.put("cause", "质量原因 ");
param.put("connectname", "姓名信息");
param.put("connectphone", "15902248763");
param.put("details", "内容");
json.post(url, map,param);
} catch (IOException e) {
e.printStackTrace();
}
//{"resData":{"status":"1","message":"成功","data":null},"token":null}
}
private RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(15000)
.setConnectTimeout(15000)
.setConnectionRequestTimeout(15000)
.build();
private final String charSet ="UTF-8";
public void post(String url,Map<String,String> fileList,Map<String,String> param) throws ClientProtocolException, IOException {
//HttpClient httpclient = new DefaultHttpClient();
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
post.setConfig(requestConfig);
MultipartEntity entity = new MultipartEntity();
//上传文件
if(null != fileList){
Iterator<Entry<String, String>> item = fileList.entrySet().iterator();
while(item.hasNext()){
Entry<String,String> it = item.next();
FileBody fileBody = new FileBody(new File(it.getValue()));
entity.addPart(it.getKey(), fileBody);
}
}
//请求参数
if(null != param){
Iterator<Entry<String, String>> item = param.entrySet().iterator();
while(item.hasNext()){
Entry<String,String> it = item.next();
//编码格式utf-8
StringBody stringBody = new StringBody(it.getValue(),Charset.forName(charSet));
entity.addPart(it.getKey(), stringBody);
}
}
post.setEntity(entity);
CloseableHttpResponse response = httpclient.execute(post);
if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
HttpEntity entitys = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entitys,charSet));
}
}
//关闭
if(null !=response){
response.close();
}
if(null != httpclient){
httpclient.close();
}
}
//防止上传文件名称中文乱码
public void post436(String url,Map<String,String> fileList,Map<String,String> param) throws ClientProtocolException, IOException {
//httpclient 4.36 版本
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
post.setConfig(requestConfig);
//MultipartEntity entity = new MultipartEntity(null,null,Charset.forName("UTF-8"));
MultipartEntityBuilder entity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
//上传文件
if(null != fileList){
Iterator<Entry<String, String>> item = fileList.entrySet().iterator();
while(item.hasNext()){
Entry<String,String> it = item.next();
FileBody fileBody = new FileBody(new File(it.getValue()));//,"application/octet-stream","UTF-8"
entity.addPart(it.getKey(), fileBody);
}
}
//请求参数
if(null != param){
Iterator<Entry<String, String>> item = param.entrySet().iterator();
while(item.hasNext()){
Entry<String,String> it = item.next();
//编码格式utf-8
StringBody stringBody = new StringBody(it.getValue(), ContentType.create(
"text/plain", Consts.UTF_8));
//new StringBody(it.getValue(),Charset.forName(charSet));
entity.addPart(it.getKey(), stringBody);
}
}
post.setEntity(entity.setCharset(CharsetUtils.get("UTF-8")).build());
CloseableHttpResponse response = httpclient.execute(post);
if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
HttpEntity entitys = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entitys,charSet));
}
}
//关闭
if(null !=response){
response.close();
}
if(null != httpclient){
httpclient.close();
}
}
}
相关推荐
扩展了HttpClient,支持复杂的HTTP多部分上传和下载,如上传文件、处理MIME类型的请求和响应。 5. `httpclient-win-4.5.jar`:针对Windows平台的特殊实现,尤其在处理NTLM或Kerberos等Windows身份验证协议时,提供...
《HttpClient 4.5:构建高效网络通信的关键库》 HttpClient是Apache软件基金会的一个开源项目,主要用于提供HTTP协议的客户端编程接口。HttpClient 4.5是该库的一个重要版本,它在功能、性能和易用性上都有显著提升...
发送请求时,可以设置请求头、添加POST参数、上传文件等。收到响应后,可以检查状态码、解析响应头、获取实体内容。HttpClient提供了一系列方便的API,如`EntityUtils`来帮助处理这些操作。 6. **安全与HTTPS** ...
6. **httpmime**:这个模块扩展了HttpClient的功能,使得能够处理MIME类型的请求和响应,例如上传和下载文件,处理表单数据等。 HttpClient 4.5的源码分析可以帮助我们深入理解其内部工作原理,包括连接池管理、...
3. **httpmime-4.5.13.jar**:这个库提供了MIME类型支持,允许HTTPClient处理多部分表单数据和文件上传。这对于发送复杂的POST请求,尤其是涉及到上传文件的场景非常有用。 4. **httpasyncclient-4.1.4.jar**:...
5. **请求和响应处理**:HttpClient 4.5提供了一套强大的API来构建和解析HTTP请求和响应,包括支持表单提交、文件上传、HTTP头操作等。 二、HttpClient 4.5的基本用法 1. **创建HttpClient实例**: ```java ...
在处理表单提交、文件上传等涉及MIME类型的HTTP请求时,httpmime是必不可少的。 4. **commons-io-2.4.jar**:Apache Commons IO是Java IO操作的实用工具类库,包含了各种文件操作、流操作、I/O异常处理等功能,为...
在 POST 请求中,可以使用 `MultipartEntityBuilder` 来构造多部分实体,支持文件上传。 9. **超时设置**: 可以通过 `RequestConfig` 配置请求的连接超时、读取超时和Socket超时,然后在请求对象上设置这个配置...
如果你需要发送或者接收带有MIME类型的HTTP请求(例如上传文件),则需要这个库。 4. `commons-logging-1.2.jar`: 用于日志记录,HTTPClient依赖这个库来输出调试信息。 在Spring MVC中,REST风格的接口是一种基于...
2. `httpmime-4.x.jar`:这个库扩展了HttpClient,使其能够处理MIME类型的请求和响应,比如上传文件或处理multipart/form-data请求。 3. `httpclient-cache-4.x.jar`:这个模块提供了HTTP缓存功能,可以根据HTTP...
在HttpClient中,可能用到这些工具进行文件上传或下载时的数据读写。 4. **httpmime-4.5.1.jar**: HttpClient的MIME扩展库,主要用于处理多媒体类型的HTTP请求,如POST请求中的文件上传。`MultipartEntityBuilder...
此库用于处理MIME类型的HTTP请求,比如上传文件。 4. `httpasyncclient-4.1.3.jar`:异步HTTP客户端库,用于处理非阻塞的HTTP请求,提高并发性能。 5. `httpcore-nio-4.4.4.jar`:HTTPCore的NIO(非阻塞I/O)版本,...
5. **多部分表单数据上传**:对于需要上传文件或处理复杂表单数据的情况,HttpClient提供了`MultipartEntityBuilder`,可以方便地构造多部分请求体。 6. **性能优化**:HttpClient支持HTTP/1.1和部分HTTP/2协议,...
在使用HTTPClient时,开发者可以创建复杂的HTTP操作,例如POST、PUT、DELETE请求,发送表单数据,上传文件,甚至处理HTTP连接池,这使得它成为Java开发者进行Web服务交互的首选库。以下是一个简单的HTTP GET请求示例...
- `httpmime.jar`:用于处理MIME类型,如在POST请求中上传文件。 6. **导入到IDE**:在描述中提到的"导入myeclipse即可使用",指的是将这三个jar包添加到MyEclipse项目的类路径中,这样项目就能识别并使用...
通过创建HttpClient实例,你可以构建请求,并配置各种设置,如超时、重试策略和连接池。`HttpHost`类代表HTTP服务器的地址和端口,而`HttpRequest`和`HttpResponse`分别表示HTTP请求和响应对象。 `HttpGet`, `...
`httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...
除了基本的HTTP请求,HttpClient还提供了很多高级特性,如使用`HttpPost`进行表单提交,使用`HttpPut`进行资源更新,使用`HttpDelete`进行资源删除,以及使用`HttpPost`实现文件上传等。 总结来说,HttpClient是...