restTemple发送请求、上传文件(@LoadBalanced微服务调用及url调用)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.cloud.client.loadbalancer.LoadBalanced; /**
*
*/
@Configuration
public class RestConfiguration { @Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
//httpRequestFactory.setConnectionRequestTimeout(3000);
httpRequestFactory.setConnectTimeout(30000);
httpRequestFactory.setReadTimeout(300000);
return new RestTemplate(httpRequestFactory);
//return new RestTemplate();
} }
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import java.io.File;
import java.util.Map; /**
*
* 微服务调用通用类(也可用作普通http类用)
*/
public class RestTemplateUtils { /**
* 发送get请求
* @param url
* @param params
* @param headers
* @param responseType
* @param <T>
* @return
*/
public static <T> T doHttpGet(String url, Map<String, String> params, Map<String, String> headers, boolean isSpringCloud, Class<T> responseType) {
RestTemplate restTemplate = getRestTemplate(isSpringCloud);
HttpHeaders restHeaders = new HttpHeaders();
restHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
restHeaders.add(CloudCodeUtils.WenToken, CloudCodeUtils.createCode()); if (headers != null) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
restHeaders.add(entry.getKey(), entry.getValue());
}
} if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
if (url.contains("?")) {
url = url + "&" + entry.getKey() + "=" + entry.getValue();
} else {
url = url + "?" + entry.getKey() + "=" + entry.getValue();
}
}
}
HttpEntity<String> restRequest = new HttpEntity<>(null, restHeaders); ResponseEntity<T> result = restTemplate.exchange(url, HttpMethod.GET, restRequest, responseType); return result.getBody();
//return restTemplate.getForObject(url, responseType, restRequest);
} /**
* 发送post请求
* @param url
* @param params
* @param headers
* @param responseType
* @param <T>
* @return
*/
public static <T> T doHttpPost(String url, Map<String, String> params, Map<String, String> headers, boolean isSpringCloud, Class<T> responseType) {
RestTemplate restTemplate = getRestTemplate(isSpringCloud);
HttpHeaders restHeaders = new HttpHeaders();
MultiValueMap<String, Object> restParam = new LinkedMultiValueMap<>(); restHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
restHeaders.add(CloudCodeUtils.WenToken, CloudCodeUtils.createCode()); if (headers != null) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
restHeaders.add(entry.getKey(), entry.getValue());
}
} if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
restParam.add(entry.getKey(), entry.getValue());
}
} HttpEntity<MultiValueMap<String, Object>> restRequest = new HttpEntity<>(restParam, restHeaders);
return restTemplate.postForObject(url, restRequest, responseType);
} /**
* 微服务url格式 String url = "http://服务名/provider/xxx";
* 上传文件
* @param url
* @param params
* @param files
* @param headers
* @param responseType
* @param <T>
* @return
*/
public static <T> T doUploadFile(String url, Map<String, String> params, Map<String, File> files, Map<String, String> headers, boolean isSpringCloud, Class<T> responseType) {
RestTemplate restTemplate = getRestTemplate(isSpringCloud);
HttpHeaders restHeaders = new HttpHeaders();
MultiValueMap<String, Object> restParam = new LinkedMultiValueMap<>(); restHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
restHeaders.add(CloudCodeUtils.WenToken, CloudCodeUtils.createCode()); if (headers != null) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
restHeaders.add(entry.getKey(), entry.getValue());
}
} if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
restParam.add(entry.getKey(), entry.getValue());
}
} if (files != null) {
for (Map.Entry<String, File> entry : files.entrySet()) {
restParam.add(entry.getKey(), new FileSystemResource(entry.getValue()));
}
}
HttpEntity<MultiValueMap<String, Object>> restRequest = new HttpEntity<>(restParam, restHeaders);
return restTemplate.postForObject(url, restRequest, responseType);
} /**
* 获取RestTemplate
* @param isSpringCloud
* @return
*/
public static RestTemplate getRestTemplate(boolean isSpringCloud){
RestTemplate restTemplate = null;
if(isSpringCloud){
restTemplate = SpringContextHolder.getBean(RestTemplate.class);
/*HttpComponentsClientHttpRequestFactory httpRequestFactory = ((HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory());
httpRequestFactory.setConnectTimeout(3000);
httpRequestFactory.setReadTimeout(300000);*/
}else{
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
httpRequestFactory.setConnectTimeout(30000);
httpRequestFactory.setReadTimeout(60000);
restTemplate = new RestTemplate(httpRequestFactory);
}
return restTemplate;
} }
restTemple发送请求、上传文件(@LoadBalanced微服务调用及url调用)的更多相关文章
- SpringMVC实现PUT请求上传文件
在JQuery中,我们可以进行REST ful中delete和put的请求,但是在java EE标准中,默认只有在POST请求的时候,servlet 才会通过getparameter()方法取得请求体 ...
- Postman Post请求上传文件
Postman Post请求上传文件一.选择post请求方式,输入请求地址 二.填写Headers Key:Content-Type :Value:multipart/form-data 如下图 三. ...
- SSM框架下,使用ajax请求上传文件(doc\docx\excel\图片等)
1.准备工作 1.1.添加上传必要jar包 <dependency> <groupId>commons-io</groupId> <artifactId> ...
- python中使用multipart/form-data请求上传文件
最近测试的接口是上传文件的接口,上传单个文件,我主要使用了2种方法~ 接口例如: URL: http://www.baidu.com/*** method:post 参数: { "salar ...
- element-ui上传组件,通过自定义请求上传文件
记录使用element-ui上传组件,通过自定义请求上传文件需要注意的地方. <el-upload ref="uploadMutiple" :auto-upload=&quo ...
- python发送post请求上传文件,无法解析上传的文件
前言 近日,在做接口测试时遇到一个奇葩的问题. 使用post请求直接通过接口上传文件,无法识别文件. 遇到的问题 以下是抓包得到的信息: 以上请求是通过Postman直接发送请求的. 在这里可以看到消 ...
- Java客户端通过Http发送POST请求上传文件到web服务器
http://www.cnblogs.com/WilliamJiang/archive/2012/04/29/2475883.html 1.朋友的一个需求,让我给他实现,需求是这样的,需要用ASP.n ...
- JAVA模拟HTTP post请求上传文件
在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...
- 通过PHP CURL模拟请求上传文件|图片。
现在有一个需求就是在自己的服务器上传图片到其他服务器上面,过程:客户端上传图片->存放到本地服务器->再转发到第三方服务器; 由于前端Ajax受限制,只能通过服务器做转发了. 在PHP中通 ...
- 通过POST请求上传文件
转自:https://blog.csdn.net/zhangge3663/article/details/81218488 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交 ...
随机推荐
- django 高级扩展-中间件-上传图片-分页-富文本-celery
""" django 高级扩展 一.静态文件 1.css,js,json,图片,字体等 2.配置setting,在最底下设置静态文件目录,写入下面代码 #配置静态文件目录 ...
- 动图图解GC算法 - 让垃圾回收动起来!
原创:码农参上(微信公众号ID:CODER_SANJYOU),欢迎分享,转载请保留出处. 提到Java中的垃圾回收,我相信很多小伙伴和我一样,第一反应就是面试必问了,你要是没背过点GC算法.收集器什么 ...
- Java-对象克隆
1. 为什么要克隆 在java中,我们通过直接=等号赋值的方法来拷贝,如果是基本数据类型是没有问题的,例如 int i = 1; int j = 0; j = i; // 直接=等号赋值,这样是没有问 ...
- 利用Jackson序列化实现数据脱敏
几天前使用了Jackson对数据的自定义序列化.突发灵感,利用此方法来简单实现接口返回数据脱敏,故写此文记录. 核心思想是利用Jackson的StdSerializer,@JsonSerialize, ...
- 题解 「SCOI2016」萌萌哒
link Description 一个长度为 $ n $ 的大数,用 $ S_1S_2S_3 \ldots S_n $表示,其中 $ S_i $ 表示数的第 $ i $ 位,$ S_1 $ 是数的最高 ...
- wqs二分 学习笔记
wqs二分学习笔记 wqs二分适用题目及理论分析 wqs二分可以用来解决这类题目: 给你一个强制要求,例如必须\(n\)条白边,或者划分成\(n\)段之类的,然后让你求出最大(小)值.但是需要满足图像 ...
- 魔改swagger:knife4j的另外一种打开方式
之前公司使用了swagger作为文档管理工具,原生的swagger-ui非常丑,之后就用了开源项目 萧明 / knife4j 的swagger组件进行了swagger渲染,改造之后界面漂亮多了,操作也 ...
- Servlet和Servlet容器
Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,它由Servlet容器所管理,用于生成动态的内容, Servlet是平台独立的Java类,编写一个S ...
- GAN实战笔记——第二章自编码器生成模型入门
自编码器生成模型入门 之所以讲解本章内容,原因有三. 生成模型对大多数人来说是一个全新的领域.大多数人一开始接触到的往往都是机器学习中的分类任务--也许因为它们更为直观:而生成模型试图生成看起来很逼真 ...
- c语言中for循环 和嵌套for循环
for循环:for( ; ; )里面是bai3个语句,两个分号.第一个语句是开始前执行,第二个语句是判断真假,如果真,就执行后面(大括号内)的代码.第三个语句是每次执行完毕后执行的东西,通常第三个语句 ...