RestTemplate get请求多参数 简单封装
使用RestTemplate发送get请求时,如果有多个参数拼接起来会比较麻烦,在此做个简单的封装
public static void main(String[] args) {
Map<String, Object> paramMap = new HashMap<>(16);
paramMap.put("userId", "8a0bb0a698c142420198c15a7e5b0001");
paramMap.put("pageNum", "1");
paramMap.put("pageSize", "3");
paramMap.put("createStartTime", "2029-08-09");
paramMap.put("createEndTime", null);
//获取积分明细
ObjectDataResponse objectDataResponse = getForObject("http://10.200.40.157:8180/manage/scoreDetail", paramMap);
System.out.println(objectDataResponse);
}
/**
* 封装的get请求,暂时只支持map传参,并且value只支持基本类型和String
*
* @param url
* @param object
* @return
*/
private static ObjectDataResponse getForObject(String url, Object object) {
StringBuffer stringBuffer = new StringBuffer(url);
if (object instanceof Map) {
Iterator iterator = ((Map) object).entrySet().iterator();
if (iterator.hasNext()) {
stringBuffer.append("?");
Object element;
while (iterator.hasNext()) {
element = iterator.next();
Map.Entry<String, Object> entry = (Map.Entry) element;
//过滤value为null,value为null时进行拼接字符串会变成 "null"字符串
if (entry.getValue() != null) {
stringBuffer.append(element).append("&");
}
url = stringBuffer.substring(0, stringBuffer.length() - 1);
}
}
} else {
throw new RuntimeException("url请求:" + url + "请求参数有误不是map类型");
}
log.info("url请求:" + url);
return new RestTemplate().getForObject(url, ObjectDataResponse.class);
}
请求结果
16:31:08.803 [main] INFO com.smf.interfaces.ManagementController - url请求:http://10.200.40.157:8180/manage/scoreDetail?createStartTime=2029-08-09&pageSize=10&userId=8a0bb0a698c142420198c15a7e5b0001&pageNum=1
16:31:09.208 [main] DEBUG org.springframework.web.client.RestTemplate - Created GET request for "http://10.200.40.157:8180/manage/scoreDetail?createStartTime=2029-08-09&pageSize=10&userId=8a0bb0a698c142420198c15a7e5b0001&pageNum=1"
16:31:09.271 [main] DEBUG org.springframework.web.client.RestTemplate - Setting request Accept header to [application/json, application/*+json]
16:31:09.834 [main] DEBUG org.springframework.web.client.RestTemplate - GET request for "http://10.200.40.157:8180/manage/scoreDetail?createStartTime=2029-08-09&pageSize=10&userId=8a0bb0a698c142420198c15a7e5b0001&pageNum=1" resulted in 200 (null)
16:31:09.835 [main] DEBUG org.springframework.web.client.RestTemplate - Reading [class com.smf.model.response.ObjectDataResponse] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@1dde4cb2]
ObjectDataResponse(super=RestfulResponse(super=com.smf.model.response.ObjectDataResponse@76b92ca8, code=20000, msg=成功), data={pageNum=1, pageSize=10, total=3, totalPage=1, rows=[{createTime=2037.12.06 02:55:38, num=1, name=活动发放积分, updateTime=null, scoreValue=+500, ROW_ID=1}, {createTime=2037.12.06 02:55:38, num=2, name=活动发放积分, updateTime=null, scoreValue=+500, ROW_ID=2}, {createTime=2037.12.06 02:55:38, num=3, name=活动发放积分, updateTime=null, scoreValue=+500, ROW_ID=3}]})
RestTemplate get请求多参数 简单封装的更多相关文章
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- React Native中的网络请求fetch和简单封装
React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...
- Extjs读取更改或者发送ajax返回请求的结果简单封装
Extjs的submit()方法提交的数据:如下: this.formPanel.getForm().submit({ url:this.saveUrl, ...
- java 接口自动化测试之数据请求的简单封装
我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- 使用getParameterMap()方法实现对请求参数的封装的工具类
我们知道,HttpServletRequest这个类的getParameter(name),getParameterValues(name)可以分别实现对页面传来的单个参数和对多个同名参数的接受.特别 ...
- 简单封装的ajax请求
简单封装了一个ajax请求,做一下统一处理,少写重复代码,只是一个初步的代码,没有经过优化. $.extend({ myAjax: function (option, rollBack) { var ...
- swift开发之--简单封装Alamofire请求类以及简单使用SnapKit
以前在swift3的时候,写过类似的,那个时候还没有很成熟的网络请求类库,在这里,还是衷心感谢大神们的付出! 具体效果如下,先上图: 点击按钮的时候,请求数据,数据结构如下: { ; reason = ...
- .NetCore简单封装基于IHttpClientFactory的HttpClient请求
IHttpClientFactory是什么?为什么出现了IHttpClientFactory 一.IHttpClientFactory是什么? IHttpClientFactory是.netcore2 ...
随机推荐
- shell 三剑客之 sed
sed 在shell 编程里也很常用,功能强大! 同grep一样,sed提供两种方式: 方式一:stdout | sed [option] "pattern command" 从文 ...
- Spring是如何解决循环依赖的
前言 在面试的时候这两年有一个非常高频的关于spring的问题,那就是spring是如何解决循环依赖的.这个问题听着就是轻描淡写的一句话,其实考察的内容还是非常多的,主要还是考察的应聘者有没有研究过s ...
- jdk 功能变化
JDK的变化 JDK1.5 JDK1.6 jdk1.7 1. 添加自动装箱,拆箱 1. =后可以省略泛型, 见ArrayList 2. try后加一个(), 定义流对象,作用域在try里 jdk1 ...
- WebApis中BOM的学习
1.1. 常用的键盘事件 1.1.1 键盘事件 <script> // 常用的键盘事件 //1. keyup 按键弹起的时候触发 document.addEventListener('ke ...
- Android开发之http网络请求返回码问题集合。
HTTP状态码(HTTP Status Code) 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 一.1xx(临时响应) 表示临时响 ...
- Unity调用PC摄像头
转载于Unity3d圣典里面,具体哪位大侠写的我忘咯. using UnityEngine; using System.Collections; public class CameraTest : M ...
- 【干货满满】1.5w字初中级前端面试复习总结
前言 金九银十,又是一波跑路.趁着有空把前端基础和面试相关的知识点都系统的学习一遍,参考一些权威的书籍和优秀的文章,最后加上自己的一些理解,总结出来这篇文章.适合复习和准备面试的同学,其中的知识点包括 ...
- 调手表(bfs)
题目描述 小明买了块高端大气上档次的电子手表,他正准备调时间呢.在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟.大家都知道,手表只有一个按钮可以把当前的数加一.在调分 ...
- Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
今天是golang专题第15篇文章,我们来继续聊聊channel的使用. 在我们的上篇文章当中我们简单介绍了golang当中channel的使用方法,channel是golang当中一个非常重要的设计 ...
- C004:要求用户输入一个美元数量,然后显示出增加5%税率后的相应金额
程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float amount; do{ printf(&q ...