- 浏览: 271110 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (183)
- oracle (4)
- informix (1)
- web开发 (6)
- java (49)
- hibernate (1)
- hadoop (1)
- spring (23)
- 非技术 (8)
- ibatis2 (5)
- Linux (6)
- tomcat (14)
- nginx (7)
- dubbo (3)
- myibatis (7)
- webservice 开发 (2)
- mysql (2)
- svn (2)
- redis (7)
- 分布式技术 (17)
- zookeeper (2)
- kafka (2)
- velocity (1)
- maven (7)
- js (1)
- freemarker (1)
- Thymeleaf (3)
- 代码审计 (1)
- ibatis3 (1)
- rabbitmq (1)
最新评论
<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();
}
}
}
发表评论
-
aop实现通用缓存,并且防止缓存击穿
2019-09-16 15:10 833实现代码在附件中 1.自定义注解文件 package sgn ... -
统计多线程下程序运行总时间
2019-05-15 16:55 1120package com.gpcsoft.hct.epp.egp ... -
通过模板的方式解决缓存被击穿的问题
2019-04-15 11:35 4141. package gjp.tools; import c ... -
Rsa 加解密算法
2019-03-18 10:27 377package gjp.tools; /** * @Aut ... -
httpClient 使用HTTPS 协议上传文件
2018-09-30 14:50 2447<dependency> <group ... -
防止 XML外部实体注入
2018-09-18 17:03 7380方式一 DocumentBuilderFactory dbf ... -
httpClient 的https 调用
2018-06-20 21:07 829package com.gpcsoft.xjmodule.ut ... -
隐藏tomcat 隐藏nginx 版本号
2017-11-22 22:32 1179如果tomcat的版本号暴露出来,会有人利用该版本所存在的漏洞 ... -
spring boot 内嵌Tomcat 配置
2017-10-25 11:17 10073Tomcat为Spring Boot的默认容器,下面是几个常用 ... -
spring boot 使用tomcat 运行
2017-10-25 11:14 10011.修改启动类,继承 SpringBootServletIni ... -
猎狗方式调用接口
2017-09-27 08:36 651package boce.hit.dog; import j ... -
tomcat7 中使用jndi连接数据源
2017-09-01 09:25 784在使用eclipse 开发环境中配置tomcat7的jndi, ... -
netty 实现长连接
2017-08-24 09:52 13131.server 端信息 package com.boce.n ... -
netty 开发入门
2017-08-22 14:30 6741.准备jar <properties> & ... -
nio 编程实例
2017-08-16 14:15 6041.编写服务端 package com.boce.nio.s ... -
tomcat 启动和停止时发送邮件
2017-08-10 16:56 7871.使用maven下载jar <project xmln ... -
监控tomcat 启动和停止向管理员发送通知
2017-08-09 16:55 1078当服务上的web容器由于故障停止工作了,怎样通知管理员呢? 我 ... -
jwt 生成token 和解析token
2017-06-06 16:45 5926<jjwt.version>0.6.0</j ... -
tomcat 远程调试代码
2017-05-27 15:14 505Linux 中的tomcat远程调试代码 1,是要编辑cata ... -
实现Java高并发隔离 模拟
2017-05-08 10:34 518package org; import java.util. ...
相关推荐
使用HTTPClient,你可以方便地实现文件的POST请求(用于上传)和GET请求(用于下载)。 **RESTful风格** RESTful风格的Web服务设计强调资源的概念,通过HTTP方法(如GET、POST、PUT、DELETE)来操作这些资源。在...
总结起来,HttpClient 4通过`MultipartEntity`和`HttpPost`提供了强大的文件上传功能,结合`HttpAsyncClient`还能实现高效的异步传输。这些组件和类库是理解和实现HTTP文件上传的关键,对于任何需要与Web服务器交互...
在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了多种功能来简化HTTP客户端开发过程。本文档将详细介绍...
本项目中的四个知识点聚焦于HTTPClient的使用,特别是文件上传以及HTTP的基本请求方法。 首先,我们要理解HTTP协议的基础。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换各种类型的数据。它主要有两种...
它允许我们将文件作为多部分/form-data类型的数据发送,这是HTTP协议中用于上传文件的标准格式。 3. **文件上传步骤**: - **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,它是...
在IT行业中,通过HTTP协议上传文件是一项常见的任务,特别是在web应用和桌面应用程序的交互中。本文将详细解析这个过程,并围绕“http post 上传文件”、“进度条”和“显示速度”这三个关键知识点进行深入讨论。 ...
在这个场景中,我们主要关注如何使用HttpClient进行文件上传。 文件上传通常涉及到Web服务器与客户端之间的交互,比如用户通过网页上传图片或文档到服务器。HttpClient库提供了一个方便的接口来实现这种功能。以下...
在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...
标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...
在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...
HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级API,用于处理HTTP请求和响应,包括重试、连接管理、超时设置等。对于网络编程,HttpClient是一个高效且灵活的选择。 2. **Eclipse...
- 为了上传文件,HTTPClient使用了`MultipartEntityBuilder`类。这个类用于构建多部分表单数据,这是HTTP POST请求中用于上传文件的标准格式。通过添加不同的部分(如文本字段和二进制文件),可以构建一个完整的...
`multipart/form-data`是HTTP协议中用于上传文件的标准格式。`upload.go`文件可能展示了如何创建一个能处理这种类型的POST请求的服务器端处理器。 在`upload.go`中,可能会有以下关键代码片段: ```go func ...
总的来说,HTTP协议上传文件是Web开发中的基本操作,而`httpcore-4.2.2.jar`这样的库则为开发者提供了便捷的工具来实现这一功能。通过理解HTTP协议原理和利用HttpClient库,我们可以高效地实现在各种应用场景下的...
本文将深入探讨如何使用C#实现在HTTP协议基础上的文件上传功能,并展示上传进度,确保程序的正确运行。 首先,我们需要了解HTTP协议中的文件上传机制。在HTTP中,文件上传通常涉及POST请求,其中包含一个或多个表单...
在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`StringBody`表示其他参数。最后,将...
这里,"file"是服务器端接收文件时使用的字段名,"/path/to/your/file"应替换为待上传文件的本地路径。 4. 将创建的HttpEntity设置为HttpPost请求的实体: ```java httpPost.setEntity(entity); ``` 5. 设置...
- **文件上传**: 当你需要通过HTTP上传文件到服务器时,可以使用HttpMime来构造包含文件的multipart/form-data请求。 - **复杂表单提交**: 如果表单数据包含非ASCII字符或者二进制数据,HttpMime可以帮助正确编码...
通过理解HTTP协议、使用适当的C#类库和正确处理大文件、进度显示及错误处理,我们可以构建出一个功能完备、稳定的文件上传系统。在WindowsFormsApplication3项目中,你可以集成这些概念,创建一个用户友好的文件上传...