`

httpClient 使用HTTPS 协议上传文件

    博客分类:
  • java
阅读更多

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.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.gpcsoft.hct.epp.egp;


import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
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.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.SSLContext;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;

public class HttpsClient {

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

//    public static final String get(final String url, final Map<String, Object> params) {
//        StringBuilder sb = new StringBuilder("");
//
//        if (null != params && !params.isEmpty()) {
//            int i = 0;
//            for (String key : params.keySet()) {
//                if (i == 0) {
//                    sb.append("?");
//                } else {
//                    sb.append("&");
//                }
//                sb.append(key).append("=").append(params.get(key));
//                i++;
//            }
//        }
//
//        CloseableHttpClient httpClient = createSSLClientDefault();
//
//        CloseableHttpResponse response = null;
//        HttpGet get = new HttpGet(url + sb.toString());
//        String result = "";
//
//        try {
//            response = httpClient.execute(get);
//
//            if (response.getStatusLine().getStatusCode() == 200) {
//                HttpEntity entity = response.getEntity();
//                if (null != entity) {
//                    result = EntityUtils.toString(entity, "UTF-8");
//                }
//            }
//        } catch (IOException ex) {
//        log.error(ex.getMessage());
//        } finally {
//            if (null != response) {
//                try {
//                    EntityUtils.consume(response.getEntity());
//                } catch (IOException ex) {
//                log.error(ex.getMessage());
//                }
//            }
//        }
//
//        return result;
//    }

    public  String postString(final String url, final Map<String, String> params) {
        CloseableHttpClient httpClient = createSSLClientDefault();
        HttpPost post = new HttpPost(url);

        MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
        multipartEntityBuilder.setCharset(Charset.forName("UTF-8"));
       // File file = new File("d:\\33344.pdf");
        File file = new File("d:\\123.pdf");
        //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.addBinaryBody("pdf",file);
        //multipartEntityBuilder.addPart("comment", new StringBody("This is comment", ContentType.TEXT_PLAIN));

        if (null != params && params.size() > 0) {
            for (Map.Entry<String, String> entry : params.entrySet()) {
                multipartEntityBuilder.addTextBody(entry.getKey(), entry.getValue(),ContentType.create(HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8));
            }
        }

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


        CloseableHttpResponse response = null;

        String result = "无数据返回";
        try {
            response = httpClient.execute(post);
            if (200 == response.getStatusLine().getStatusCode()) {
                HttpEntity entity = response.getEntity();
                if (null != entity) {
                    result = EntityUtils.toString(entity, "UTF-8");
                }
               
                log.info("result:"+result);
            }

            httpClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
            log.error(ex.getMessage());
        } finally {
            if (null != response) {
                try {
                    EntityUtils.consume(response.getEntity());
                } catch (IOException ex) {
                log.error(ex.getMessage());
                }
            }


        }

        return result;
    }

    private static CloseableHttpClient createSSLClientDefault() {
        SSLContext sslContext;
        try {
            sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                //信任所有
                @Override
                public boolean isTrusted(X509Certificate[] xcs, String string){
                    return true;
                }
            }).build();
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);

            return HttpClients.custom().setSSLSocketFactory(sslsf).build();
        } catch (KeyStoreException ex) {
        log.error(ex.getMessage());
        } catch (NoSuchAlgorithmException ex) {
        ex.printStackTrace();
        log.error(ex.getMessage());
        } catch (KeyManagementException ex) {
        ex.printStackTrace();
        log.error(ex.getMessage());
        }

        return HttpClients.createDefault();
    }
   
   
    public static void config(){
   
    // System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3,TLSv1.0,SSLv2");
    String path = System.getProperty("user.dir")+File.separator
    +"src/main/resources/sys"+File.separator+"log4j.properties";
   
    PropertyConfigurator.configure(path);
    }
   
    public static void zbxx() {
HttpsClient post = new HttpsClient();
try {

String url ="https://localhost/cgjy/recPdfController.do?method=getSmallPlatPdf";
//uniteId  applyCode  beginTime endTime recordTime companyName nos
Map<String, String> param = new HashMap<String, String>();
param.put("uniteId","111");
            param.put("applyCode","111");
            param.put("beginTime", "20180930");
            param.put("endTime","20180930");
            param.put("recordTime","20181030212230");
            param.put("companyName","测试信息内容499004");
            param.put("nos","2346789");

String result = post.postString(url, param);
            System.out.println(result);
        } catch (Exception e) {
e.printStackTrace();
}
}
    public static void main(String[] args) {
    config();
    zbxx();
   

   
}
}


===================================================================

package com.gpcsoft.hct.epp.egp;


import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
//import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
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.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.SSLContext;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;

/**
* 业绩报告测试类
*/

public class HttpsClientReport {

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

    public  String postString(final String url, final Map<String, String> params) {
        CloseableHttpClient httpClient = createSSLClientDefault();
        HttpPost post = new HttpPost(url);

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

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

        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();
        post.setEntity(httpEntity);


        CloseableHttpResponse response = null;

        String result = "无数据返回";
        try {
            response = httpClient.execute(post);
            if (200 == response.getStatusLine().getStatusCode()) {
                HttpEntity entity = response.getEntity();
                if (null != entity) {
                    result = EntityUtils.toString(entity, "UTF-8");
                }
               
                log.info("result:"+result);
            }

            httpClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
            log.error(ex.getMessage());
        } finally {
            if (null != response) {
                try {
                    EntityUtils.consume(response.getEntity());
                } catch (IOException ex) {
                log.error(ex.getMessage());
                }
            }


        }

        return result;
    }

    private static CloseableHttpClient createSSLClientDefault() {
        SSLContext sslContext;
        try {
            sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                //信任所有
                @Override
                public boolean isTrusted(X509Certificate[] xcs, String string){
                    return true;
                }
            }).build();
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);

            return HttpClients.custom().setSSLSocketFactory(sslsf).build();
        } catch (KeyStoreException ex) {
        log.error(ex.getMessage());
        } catch (NoSuchAlgorithmException ex) {
        ex.printStackTrace();
        log.error(ex.getMessage());
        } catch (KeyManagementException ex) {
        ex.printStackTrace();
        log.error(ex.getMessage());
        }

        return HttpClients.createDefault();
    }
   
   
    public static void config(){
    // System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3,TLSv1.0,SSLv2");
    String path = System.getProperty("user.dir")+File.separator
    +"src/main/resources/sys"+File.separator+"log4j.properties";
   
    PropertyConfigurator.configure(path);
    }
   
    public static void zbxx() {
HttpsClientReport post = new HttpsClientReport();
try {

String url ="https://localhost/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","111");
            param.put("beginTime", "20180930");
            param.put("endTime","20180930");
            param.put("recordTime","20181030212230");
            param.put("companyName","测试信息内容499004");
            param.put("nos","2346789");

String result = post.postString(url, param);
            System.out.println(result);
        } catch (Exception e) {
e.printStackTrace();
}
}
    public static void main(String[] args) {
    //config();
    zbxx();
   

   
}
}

分享到:
评论

相关推荐

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

    小小测试项目包含了4个知识点,其中包含了http协议向服务器传输数据的post和get方法,包含了httpclient传输方法,httpclient上传文件到服务器的方法,

    android批量文件上传(附服务端Demo)

    android——SpringMVC实现批量文件上传 HTTP协议和HttpClient2种方式实现批量上传

    采用http协议请求系统接口一次传输多个文件和属性

    原来系统中采用webservice技术进行系统间通信,传递bean属性和文件。现在采用http协议代替,速度更快,更便捷。使用java httpclient做的一个demo,采用springboot框架,下载后放idea里面就可以运行。

    HttpClient

    HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,支持get Post 图片加载 文件上传。

    FastHttpClient:封装OkHttp3,对外提供了POST请求,GET请求,上传文件,下载文件,https请求,cookie管理等功能

    支持Http / Https协议 支持同步/异步请求 支持初步逐步执行 支持Cookie持久化 支持JSON,表单提交 支持文件和图片上传/批量上传,支持同步/逐步上传,支持进度提示 支持文件流上传 下载 下载jar或通过Maven抢: ...

    httpmine-4.1.3.jar及源其码

    Android文件上传框架,支持文字上传和文件上传,多文件上传。 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议...

    大型分布式网站架构与实践

     3.1.4 文件上传漏洞 139  3.1.5 DDoS攻击 146  3.1.6 其他攻击手段 149  3.2 常用的安全算法 149  3.2.1 数字摘要 149  3.2.2 对称加密算法 155  3.2.3 非对称加密算法 158  3.2.4 数字签名 162  3.2.5 ...

    Android使用http协议与服务器通信的实例

    首先,需要明确一下http通信流程,Android目前提供两种http通信方式,HttpURLConnection和HttpClient,HttpURLConnection多用于发送或接收流式数据,因此比较适合上传/下载文件,HttpClient相对来讲更大更全能,但是...

    apache-commons源码及jar文件

    FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 Jelly Jelly是一个基于 ...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    黎活明android教程的全程PPT

    4&gt; 网络--通过HTTP协议实现文件上传 第五天 1&gt; 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2&gt; 网络--通过HTTP协议实现多线程断点续传下载 3&gt; 为应用添加新的Activity与参数传递 4&gt; ...

    传智播客Android视频教程-课程源码.rar

    使用HttpClient开源项目提交参数给服务器 4&gt; 网络--通过HTTP协议实现文件上传 第五天 1&gt; 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2&gt; 网络--通过HTTP协议实现多线程断点续传下载 3&gt; ...

    Golang实现的HTTP客户端下载限速功能包.rar

    这里实现比较简单和粗浅,让我想起FunTester测试框架一开始的时候,也是从封装HttpClient.jar提供的API开始的,感慨万千。 这里我从了Golang SDK自带的net/http包提供的HTTP相关API,虽然本身提供了http.PostForm()...

    xUtils3.0框架学习笔记分享

    1、xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词)。 2、拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。 3、图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp;...

    基于SSM框架的SOA架构电商商城+源代码+文档说明

    - HttpClient Http协议访问客户端 - Quartz 定时任务 - Solr 搜索服务 整个淘淘商城是面向SOA架构的 ![](taotao-image/images/taotao.png) -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后...

    java jdk实列宝典 光盘源代码

    内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;... 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    word源码java-javaUtils-:java常用的工具类,附带Springboot配置属性目录

    多数据源的配置及动态切换数据库的切面配置(还未完善好,配置文件暂上传) database JedisUtil(redis连接操作实现) encrypt RsaUtils(rsa加密Java实现) http http.async HttpAsyncClient(httpasyncclient4.1.3...

    精通ANDROID 3(中文版)1/2

    3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  第4章 ContentProvider  4.1 探索Android内置的...

    精通Android 3 (中文版)2/2

    3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  第4章 ContentProvider  4.1 探索Android内置的...

Global site tag (gtag.js) - Google Analytics