`

httpclient4.5 文件上传

    博客分类:
  • java
阅读更多

 

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();

}

}

 

}

 

分享到:
评论

相关推荐

    httpclient4.5.zip

    扩展了HttpClient,支持复杂的HTTP多部分上传和下载,如上传文件、处理MIME类型的请求和响应。 5. `httpclient-win-4.5.jar`:针对Windows平台的特殊实现,尤其在处理NTLM或Kerberos等Windows身份验证协议时,提供...

    httpclient-4.5所需jar包

    《HttpClient 4.5:构建高效网络通信的关键库》 HttpClient是Apache软件基金会的一个开源项目,主要用于提供HTTP协议的客户端编程接口。HttpClient 4.5是该库的一个重要版本,它在功能、性能和易用性上都有显著提升...

    httpclient-4.5.jar

    2. `httpmime-4.x.jar`:这个库扩展了HttpClient,使其能够处理MIME类型的请求和响应,比如上传文件或处理multipart/form-data请求。 3. `httpclient-cache-4.x.jar`:这个模块提供了HTTP缓存功能,可以根据HTTP...

    httpclient4.5工具包

    发送请求时,可以设置请求头、添加POST参数、上传文件等。收到响应后,可以检查状态码、解析响应头、获取实体内容。HttpClient提供了一系列方便的API,如`EntityUtils`来帮助处理这些操作。 6. **安全与HTTPS** ...

    HttpClient4.5源码

    6. **httpmime**:这个模块扩展了HttpClient的功能,使得能够处理MIME类型的请求和响应,例如上传和下载文件,处理表单数据等。 HttpClient 4.5的源码分析可以帮助我们深入理解其内部工作原理,包括连接池管理、...

    httpclient-4.5使用需要的所有jar包

    3. **httpmime-4.5.13.jar**:这个库提供了MIME类型支持,允许HTTPClient处理多部分表单数据和文件上传。这对于发送复杂的POST请求,尤其是涉及到上传文件的场景非常有用。 4. **httpasyncclient-4.1.4.jar**:...

    HttpClient4.5

    5. **请求和响应处理**:HttpClient 4.5提供了一套强大的API来构建和解析HTTP请求和响应,包括支持表单提交、文件上传、HTTP头操作等。 二、HttpClient 4.5的基本用法 1. **创建HttpClient实例**: ```java ...

    httpclient 4.5 所需的jar包 附带源码

    在处理表单提交、文件上传等涉及MIME类型的HTTP请求时,httpmime是必不可少的。 4. **commons-io-2.4.jar**:Apache Commons IO是Java IO操作的实用工具类库,包含了各种文件操作、流操作、I/O异常处理等功能,为...

    httpclient4.5笔记,常用知识点,从零开始也能看懂(持续更新)

    在 POST 请求中,可以使用 `MultipartEntityBuilder` 来构造多部分实体,支持文件上传。 9. **超时设置**: 可以通过 `RequestConfig` 配置请求的连接超时、读取超时和Socket超时,然后在请求对象上设置这个配置...

    httpclient 4.5 相关jar包 (Spring mvc REST风格对外接口,HttpClient调用)

    如果你需要发送或者接收带有MIME类型的HTTP请求(例如上传文件),则需要这个库。 4. `commons-logging-1.2.jar`: 用于日志记录,HTTPClient依赖这个库来输出调试信息。 在Spring MVC中,REST风格的接口是一种基于...

    HttpClient4.5所需jar包

    在HttpClient中,可能用到这些工具进行文件上传或下载时的数据读写。 4. **httpmime-4.5.1.jar**: HttpClient的MIME扩展库,主要用于处理多媒体类型的HTTP请求,如POST请求中的文件上传。`MultipartEntityBuilder...

    httpclient-4.5所需jar包.zip

    此库用于处理MIME类型的HTTP请求,比如上传文件。 4. `httpasyncclient-4.1.3.jar`:异步HTTP客户端库,用于处理非阻塞的HTTP请求,提高并发性能。 5. `httpcore-nio-4.4.4.jar`:HTTPCore的NIO(非阻塞I/O)版本,...

    HttpClient-4.5所需jar包.rar

    5. **多部分表单数据上传**:对于需要上传文件或处理复杂表单数据的情况,HttpClient提供了`MultipartEntityBuilder`,可以方便地构造多部分请求体。 6. **性能优化**:HttpClient支持HTTP/1.1和部分HTTP/2协议,...

    httpclient-4.5 jar包 和 jsonp jar包

    在使用HTTPClient时,开发者可以创建复杂的HTTP操作,例如POST、PUT、DELETE请求,发送表单数据,上传文件,甚至处理HTTP连接池,这使得它成为Java开发者进行Web服务交互的首选库。以下是一个简单的HTTP GET请求示例...

    HttpClient实例+必备3个jar包

    - `httpmime.jar`:用于处理MIME类型,如在POST请求中上传文件。 6. **导入到IDE**:在描述中提到的"导入myeclipse即可使用",指的是将这三个jar包添加到MyEclipse项目的类路径中,这样项目就能识别并使用...

    Apache httpclient源码4.5.12

    通过创建HttpClient实例,你可以构建请求,并配置各种设置,如超时、重试策略和连接池。`HttpHost`类代表HTTP服务器的地址和端口,而`HttpRequest`和`HttpResponse`分别表示HTTP请求和响应对象。 `HttpGet`, `...

    httpclient4中文API和使用

    `httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...

    httpclient所需jar包

    除了基本的HTTP请求,HttpClient还提供了很多高级特性,如使用`HttpPost`进行表单提交,使用`HttpPut`进行资源更新,使用`HttpDelete`进行资源删除,以及使用`HttpPost`实现文件上传等。 总结来说,HttpClient是...

Global site tag (gtag.js) - Google Analytics