`

httpClient 使用http协议上传文件

阅读更多


<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5</version>
</dependency>








package com.gjp;

import com.gjp.util.PerformanceReport;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
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.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;

/**
* @Auther: gaojp
* @Date: 2018/10/9 14:40
* @Description: http 通讯工具
*/
public class HttpClientReport {

    private static Logger log = LoggerFactory.getLogger(HttpClientReport.class);

    public void upload2(final String url, final Map<String, String> params) throws ClientProtocolException, IOException {
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        CloseableHttpResponse httpResponse = null;
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000000).build();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(requestConfig);
        MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();

        multipartEntityBuilder.setCharset(Charset.forName("UTF-8"));

        File file = new File(params.get("pdf"));
        multipartEntityBuilder.addBinaryBody("pdf", file);

        //multipartEntityBuilder.addBinaryBody("file", file,ContentType.create("image/png"),"abc.pdf");
        //当设置了setSocketTimeout参数后,以下代码上传PDF不能成功,将setSocketTimeout参数去掉后此可以上传成功。上传图片则没有个限制
        //multipartEntityBuilder.addBinaryBody("file",file,ContentType.create("application/octet-stream"),"abd.pdf");

        // multipartEntityBuilder.addTextBody("comment", "this is comment");

        if (null != params && params.size() > 0) {
            for (Map.Entry<String, String> entry : params.entrySet()) {
                multipartEntityBuilder.addTextBody(entry.getKey(), entry.getValue(), ContentType.create("text/plain", Charset.forName("UTF-8")));
            }
        }

        HttpEntity httpEntity = multipartEntityBuilder.build();
        httpPost.setEntity(httpEntity);

        httpResponse = httpClient.execute(httpPost);
        HttpEntity responseEntity = httpResponse.getEntity();
        int statusCode = httpResponse.getStatusLine().getStatusCode();
        if (statusCode == 200) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(responseEntity.getContent()));
            StringBuffer buffer = new StringBuffer();
            String str = "";
            while (!StringUtils.isEmpty(str = reader.readLine())) {
                buffer.append(str);
            }

            System.out.println("返回:" + buffer.toString());
        }

        httpClient.close();
        if (httpResponse != null) {
            httpResponse.close();
        }

    }

    public static void main(String[] args) {

        HttpClientReport report = new HttpClientReport();
        String url = "http://localhost:8080/cgjy/recPdfController.do?method=getSmallPlatPdf";
        //uniteId  applyCode  beginTime endTime recordTime companyName nos
        Map<String, String> param = new HashMap<String, String>();
        //文件key 和文件路径
        param.put("pdf", "d:\\123.pdf");
        param.put("uniteId", "111");
        param.put("applyCode", "12");
        param.put("beginTime", "20180930");
        param.put("endTime", "20180930");
        param.put("recordTime", "20181030212230");
        param.put("companyName", "测试信息内容499004");
        param.put("nos", "2346789");
        //格式:uniteId+";"+applyCode+";"+companyName
        StringBuffer content = new StringBuffer(50);
        content.append("111").append(";").append("12").append(";");
        content.append("测试信息内容499004");
        System.out.println(content.toString());
        String sign = PerformanceReport.aesEncrypt(content.toString());
        System.out.println("sign:" + sign);
        param.put("sign", sign);
        try {
            report.upload2(url, param);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
分享到:
评论

相关推荐

    httpclient和RestfuL风格上传下载文件

    使用HTTPClient,你可以方便地实现文件的POST请求(用于上传)和GET请求(用于下载)。 **RESTful风格** RESTful风格的Web服务设计强调资源的概念,通过HTTP方法(如GET、POST、PUT、DELETE)来操作这些资源。在...

    HttpClient 4 - 文件上传

    总结起来,HttpClient 4通过`MultipartEntity`和`HttpPost`提供了强大的文件上传功能,结合`HttpAsyncClient`还能实现高效的异步传输。这些组件和类库是理解和实现HTTP文件上传的关键,对于任何需要与Web服务器交互...

    HttpClient 4文件上传

    在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了多种功能来简化HTTP客户端开发过程。本文档将详细介绍...

    android httpclient文件上传 http协议post get方法向服务器传输数据

    本项目中的四个知识点聚焦于HTTPClient的使用,特别是文件上传以及HTTP的基本请求方法。 首先,我们要理解HTTP协议的基础。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换各种类型的数据。它主要有两种...

    使用HttpClient实现文件的上传所需lib

    它允许我们将文件作为多部分/form-data类型的数据发送,这是HTTP协议中用于上传文件的标准格式。 3. **文件上传步骤**: - **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,它是...

    通过http协议上传文件

    在IT行业中,通过HTTP协议上传文件是一项常见的任务,特别是在web应用和桌面应用程序的交互中。本文将详细解析这个过程,并围绕“http post 上传文件”、“进度条”和“显示速度”这三个关键知识点进行深入讨论。 ...

    HttpClient 文件上传

    在这个场景中,我们主要关注如何使用HttpClient进行文件上传。 文件上传通常涉及到Web服务器与客户端之间的交互,比如用户通过网页上传图片或文档到服务器。HttpClient库提供了一个方便的接口来实现这种功能。以下...

    HttpClient上传文件需要的Jar包

    在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...

    https+spring3+httpclient4多文件上传

    标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...

    httpclient 上传文件

    在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...

    java使用HttpClient通过url下载文件到本地

    HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级API,用于处理HTTP请求和响应,包括重试、连接管理、超时设置等。对于网络编程,HttpClient是一个高效且灵活的选择。 2. **Eclipse...

    httpclient上传头像,图片,文件

    - 为了上传文件,HTTPClient使用了`MultipartEntityBuilder`类。这个类用于构建多部分表单数据,这是HTTP POST请求中用于上传文件的标准格式。通过添加不同的部分(如文本字段和二进制文件),可以构建一个完整的...

    golang大文件上传

    `multipart/form-data`是HTTP协议中用于上传文件的标准格式。`upload.go`文件可能展示了如何创建一个能处理这种类型的POST请求的服务器端处理器。 在`upload.go`中,可能会有以下关键代码片段: ```go func ...

    http协议上传文件

    总的来说,HTTP协议上传文件是Web开发中的基本操作,而`httpcore-4.2.2.jar`这样的库则为开发者提供了便捷的工具来实现这一功能。通过理解HTTP协议原理和利用HttpClient库,我们可以高效地实现在各种应用场景下的...

    C# http方式文件上传客户端

    本文将深入探讨如何使用C#实现在HTTP协议基础上的文件上传功能,并展示上传进度,确保程序的正确运行。 首先,我们需要了解HTTP协议中的文件上传机制。在HTTP中,文件上传通常涉及POST请求,其中包含一个或多个表单...

    struts2 android httpclient 上传文件

    在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`StringBody`表示其他参数。最后,将...

    HttpClient模拟客户端传输文件

    这里,"file"是服务器端接收文件时使用的字段名,"/path/to/your/file"应替换为待上传文件的本地路径。 4. 将创建的HttpEntity设置为HttpPost请求的实体: ```java httpPost.setEntity(entity); ``` 5. 设置...

    httpclient和httpmime的jar包

    - **文件上传**: 当你需要通过HTTP上传文件到服务器时,可以使用HttpMime来构造包含文件的multipart/form-data请求。 - **复杂表单提交**: 如果表单数据包含非ASCII字符或者二进制数据,HttpMime可以帮助正确编码...

    http post方式上传文件(C#)

    通过理解HTTP协议、使用适当的C#类库和正确处理大文件、进度显示及错误处理,我们可以构建出一个功能完备、稳定的文件上传系统。在WindowsFormsApplication3项目中,你可以集成这些概念,创建一个用户友好的文件上传...

Global site tag (gtag.js) - Google Analytics