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 ...
随机推荐
- java项目的心得,java项目的代码层次的架构划分
java项目使用的架构是ssm(Spring+SpringMVC+MyBatis). 一.后台代码一般分三层,Controller,Service,Dao. 1.Controller层是对前端或者接口 ...
- Java面试题(MySQL篇)
MySql 164.数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项. 第二范式:要求实体的属性完全依赖于主关键字.所谓完全依赖是指不能存在仅依赖主关键 ...
- 华为SEO搜索引擎主管招聘内容
http://www.wocaoseo.com/thread-166-1-1.html 华为SEO搜索引擎主管招聘内容: 职位职责 1. 提出全站的SEO策略和实施计划,推动和监督计划实施:负责提升各 ...
- Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解
Message:消息:其中包含了消息ID,消息对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理 Handler:处理者:负责Message发送消息及处理.Handler ...
- 初学WebGL引擎-BabylonJS:第3篇-方向纹理与相机
[playground]-rotatuib abd scaling(方向) 源码 var createScene = function () { var scene = new BABYLON.Sce ...
- Spine学习九 - 冰冻效果
想象这样一个效果,一个人被冰霜攻击命中,然后这个人整个就被冰冻了,那么spine动画要如何实现这个效果呢? 1.首先需要一个Spine动画,这个动画应该是相对静止的,因为人物已经被冰冻了,那么这个人儿 ...
- Python学习—Anaconda详细 下载、安装与使用,以及如何创建虚拟环境,不仅仅只有安装步骤哦
上一期我们介绍了Python.Pycharm.Anaconda三者之间的关系以及使用,这一期主要详细介绍如何在Windows上下载和安装工具Anaconda,然后使用其自带的conda管理不同项目的虚 ...
- leetcode刷题-56合并区间
题目 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]] 思路 通过设置一个移 ...
- 解决Maven的JDK版本问题
在pom文件中添加以下代码 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...
- Java判断一个字符串是否是回文
package com.spring.test; /** * 判断字符串是否为回文 * * @author liuwenlong * @create 2020-08-31 11:33:04 */ @S ...