`
kanpiaoxue
  • 浏览: 1795239 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

How To Use Spring RESTTemplate To Post Data to a Web Service

 
阅读更多

使用spring的restelplate的post方法,向web程序发起请求,参数用各种变量,包括@RequestBody。

@Controller
@RequestMapping("/task")
public class TaskWithTokenController extends BaseController {

    @Autowired
    private DataVersionService dataVersionService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private SysService sysService;

    @RequestMapping(value = "/{token}/{userId}/update",
            method = RequestMethod.POST)
    public void update(HttpServletResponse response,
            @RequestBody Task task,
            @PathVariable("token") String token,
            @PathVariable("userId") String userId) {
        LOGGER.debug("update");

        try {
            long taskSysId = checkTokenForTask(task.getTaskId(), token);
            task.setSysId(taskSysId);
            taskService.updateTaskAndAddLog(task, userId);
            processSuccessForResponse(response);
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
            processErrorForResponse(response, e.getMessage());
        }
    }

    private long checkTokenForTask(long taskId, String token) throws Exception {
        Task t = taskService.query(taskId);
        Preconditions.checkNotNull(t, "不存在任务ID是:[%s] 的任务! ");
        long taskSysId = t.getSysId().longValue();
        List<Sys> syses = sysService.queryAllOnlineSyss();
        String taskToken = null;
        for (Sys sys : syses) {
            if (taskSysId == sys.getSysId().longValue()) {
                taskToken = sys.getToken();
                break;
            }
        }
        String err = String.format("%s 是一个无效的token.", token);
        Preconditions.checkArgument(StringUtils.isNotBlank(taskToken), err);
        Preconditions.checkArgument(token.equals(taskToken), err);
        return taskSysId;

    }

}

 

@RequestMapping(value = "/updateTask", method = { RequestMethod.POST })
    @ResponseBody
    public AjaxResult updateTask(@RequestBody Task task,
            @CookieValue(Consts.COOKIE_USER_KEY) String userId) {
        LOGGER.info("user {} start update task {}", userId, task);
        // 检验字段格式
        if ((task.getTaskId() == null) || (task.getTaskId() == -1)) {
            return AjaxResult.errorMessage("taskId is wrong!");
        }

        String url =                 "http://localhost:8080/dmap-apiserver/api/task/{token}/{userId}/update";
        
        try {
            defaultTaskValue(task);
            Map<String, String> uriVariables = Maps.newHashMap();
            uriVariables.put("token", token);
            uriVariables.put("userId", userId);
            ResponseEntity<String> rs = restTemplate.postForEntity(url, task, String.class, uriVariables);
            
            
            String body = rs.getBody();
            AjaxResult ars = JSON.parseObject(body, AjaxResult.class);
            return ars;
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
            return AjaxResult.errorMessage(e.getMessage());
        }

    }

 

参考: http://johnathanmarksmith.com/spring/java/javaconfig/programming/spring%20java%20configuration/spring%20mvc/web/rest/resttemplate/2013/06/18/how-to-use-spring-resttemplate-to-post-data-to-a-web-service/

分享到:
评论

相关推荐

    雷达技术知识

    compared with field measurements to evaluate accuracies and determine how water surface roughness and point density affect LiDAR measurements. Results show that LiDAR derived water surface slopes were...

    MySQL 5.6 Reference Manual

    Table of Contents Preface, Notes, Licenses . . . . . . . . ....1. Licenses for Third-Party Components ....1.1. FindGTest.cmake License ....1.2. LPeg Library License ....1.3. LuaFileSystem Library License ....

    apache-jmeter-5.6.3 带插件

    apache-jmeter-5.6.3 带插件

    第六章:Python tkinter 库入门与进阶:构建精美用户界面

    内置源程序供读者参考学习

    Java毕业设计-SpringBoot+Vue的校园台球厅人员与设备管理系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    MATLAB设计的图像去雾设计(GUI界面设计).zip

    MATLAB设计的图像去雾设计(GUI界面设计)

    2023年江苏省计算机二级考试VB试题分类汇总及答案.pdf

    2023年江苏省计算机二级考试VB试题分类汇总及答案.pdf

    基于SpringBoot+Vue的线上买菜系统(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    基于SSM+JSP的美食推荐管理系统+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    2023年微型计算机原理试题库及答案.pdf

    2023年微型计算机原理试题库及答案.pdf

    联邦基金有效利率历史数据.xlsx

    美联储在2024年9月18日宣布将其调50个基点,降至4.75%至5.00%之间的水平。这是美联储自2020年3月以来首次降息,也是自2023年7月将利率水平调升至历史高位后的首次下调,标志着货币政策由紧缩周期向宽松周期的转向 数据名称:美国联邦基金有效利率、目标利率历史数据 样本数量:12667条 数据年份:1990.1-2024.9 数据说明:包括有效利率、目标利率 更新日期:2024年9月

    2023年专升本计算机基础习题答案.pdf

    2023年专升本计算机基础习题答案.pdf

    springboot基于SpringBoot的CSGO赛事管理系统 LW PPT.zip

    ava项目springboot基于springboot的课程设计,包含源码+数据库+毕业论文

    Java毕业设计-SpringBoot+Vue的校园疫情防控系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    基于SpringBoot+Vue的医患档案管理系统(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    基于SpringBoot+Vue的在线考试(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    【工程项目】MATLAB教室人数统计(GUI框架,定位和分割人脸,计数).zip

    【工程项目】MATLAB教室人数统计(GUI框架,定位和分割人脸,计数)

    2023年山东专升本计算机真题及答案.pdf

    2023年山东专升本计算机真题及答案.pdf

    2023年计算机与通信网络实验报告.pdf

    2023年计算机与通信网络实验报告.pdf

    基于SSM+JSP的固定资产管理系统+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

Global site tag (gtag.js) - Google Analytics