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 ...
随机推荐
- 0基础掌握接口测试神器-Postman
一:Postman环境搭建 1:postman是什么?Postman是一款功能强大的网页调试与发送网页HTTP请求的接口测试工具.2:postman有几种安装方式?两种,应用程序和浏览器插件 3:po ...
- 在Unity中检测死循环和卡死
当游戏在手机/模拟器上卡死,logcat没有日志输出,也没有卡死堆栈信息或者bugly也没有捕获到异常,你是否很焦急?本文介绍一下我们项目中检测Unity卡死的方法,也许适合你使用. 实现原理 在绝大 ...
- shell 三剑客之 grep
grep 的全称是 Globally search a Regular Expression and Print,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...
- 蒲公英 · JELLY技术周刊 Vol.19 从零开始的 Cloud IDE 开发
蒲公英 · JELLY技术周刊 Vol.19 你是否也会有想法去开发一个自己的 IDE 却苦于时间和精力不足,完成 Desktop IDE 却又被 Cloud IDE 的概念追在身后难以入睡,这样的两 ...
- 记录laravelchina中的微信小程序教程的第四节的安装easy WeChat扩展的报错
composer require "overtrue/laravel-wechat:~5.0 PHP Fatal error: Allowed memory size of 16106127 ...
- 我对Flutter的第一次失望
老孟导读:此文翻译自:https://medium.com/@suragch/my-first-disappointment-with-flutter-5f6967ba78bf 我喜欢Flutter. ...
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- Zabbix 5.0切换中文语言小结
最近测试Zabbix 5.0,去修改语言时发现不能选择"Chinese(zh_CN)",这个选项在下拉框中是灰色的(无法选择).提示"You are not able t ...
- XmlAnalyzer1.00 源码
此工程用途:将xml同级属性/子节点按字母序排列重新输出. 源码下载: https://files.cnblogs.com/files/heyang78/XmlAnalyzer-20200526-1. ...
- 详解 LeetCode_007_整数反转(Java 实现)
目录 LeetCode_007_整数反转 题目描述 总体分析 解决方案 小结 LeetCode_007_整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示 ...