`
kanpiaoxue
  • 浏览: 1795614 次
  • 性别: 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 ....

    bytetrack的跟踪效果

    dancetrack0004的gt

    2023年全球房地产行业并购趋势:政策调整与市场需求变化下的投资机遇

    本文由普华永道发布,详细分析了2023年全球房地产行业的并购趋势。在全球宏观经济环境变化和货币政策调整背景下,房地产并购活动有所放缓,但仍有大量资金等待入场。文中探讨了办公、工业、住宅、零售和酒店五大板块的具体情况及其面临的挑战与机遇。办公资产受利率上调影响较大,但优质资产需求仍然旺盛;工业地产在电商和供应链调整驱动下持续增长;住宅市场因利率上升导致租赁需求增加;零售业则受益于消费者回归实体店;酒店业则因旅游需求回暖而保持高位并购活动。此外,文章还提到不同区域市场的特点,如美洲、欧洲、中东和亚太地区的具体动态。

    计算机二级题库(已经分类).pdf

    计算机二级题库(已经分类).pdf

    intel pcm官方资源

    intel pcm

    汽车入门必读,深刻了解底层逻辑

    汽车入门必读,深刻了解底层逻辑

    计算机二级模拟试题.pdf

    计算机二级模拟试题.pdf

    计算机发展和特点.pdf

    计算机发展和特点.pdf

    基于java的图书馆管理系统毕业设计含源文件.doc

    基于java的图书馆管理系统毕业设计含源文件.doc

    计算机汇编原理.pdf

    计算机汇编原理.pdf

    基于Linux平台的机器人控制系统与路径识别设计方案

    内容概要:本文详细介绍了基于Linux平台的机器人控制系统和路径识别项目的完整设计方案。

    计算机二级计算机编程题.pdf

    计算机二级计算机编程题.pdf

    基于网络流量的设备识别技术综述与发展前景

    内容概要:本文详细介绍了基于网络流量的设备识别技术,涵盖了其发展历史、TCP/IP协议的基础知识以及当前的研究进展。文章首先回顾了早期设备识别的需求和方法,指出随着物联网设备的多样化和复杂化,传统的设备识别方法已难以满足现代需求。接着探讨了高性能扫描工具的作用,强调了TCP/IP各层协议在网络流量分析中的重要性。文中还深入讨论了两种主要的设备识别方法:基于协议特征和统计特征的分类器学习,以及基于应用层数据的自动化规则生成。最后,文章指出了现有方法的优点和局限性,并展望了未来的研究方向。 适合人群:信息安全研究人员、网络管理员、物联网开发者和技术爱好者。 使用场景及目标:适用于希望深入了解设备识别技术原理及其应用场景的专业人士,旨在帮助他们掌握最新的技术和工具,以应对日益复杂的网络安全挑战。 其他说明:文章引用了两篇权威文献,提供了详尽的技术细节和案例分析,有助于读者全面理解设备识别领域的最新进展。

    汇编语言 + x86 架构 + 密码本程序开发 + 助力汇编学习

    1. **内容概要**:x86版本汇编密码本程序基于x86汇编编写,支持增删改查。程序经x86架构优化,执行效率高、兼容性好。 2. **适用人群**:适合学习x86汇编的学生、加密技术爱好者、信息安全开发者以及逆向工程从业者。 3. **使用场景及目标**:在数据传输和存储场景下,对敏感数据加密,保障数据安全。学习者能借此深入理解汇编与加密算法,开发者可将其功能集成到项目中。 4. **其他说明**:程序基于x86架构,在其他架构使用可能需适配。使用者需具备一定汇编和加密知识,使用时应遵守法律法规,关注技术动态,适时更新程序 。

    BAT经典面试题解析:涵盖C++、数据结构与算法、操作系统等领域的深度探讨

    内容概要:本文档汇集了 BAT(百度、阿里巴巴、腾讯)的经典面试题目及其详细解答,涵盖了广泛的技术领域。主要内容包括 STL 容器(如 vector、Map、Set)的实现原理,洗牌算法的设计,竞赛排序问题,中位数查找算法,智能指针的实现与循环引用处理,单例模式的线程安全实现,C++ 结构体大小计算,引用与指针的区别,const 和 define 的对比,强制类型转换的区别,虚函数的工作原理,内存管理和多线程编程技巧,Linux 内存分配机制,以及各种算法设计问题(如短网址服务、网页爬虫、大数据处理等)。这些问题不仅涉及基础知识的理解,还包括实际应用场景中的优化和解决方案。 适合人群:具备一定编程基础和技术背景的研发人员,尤其是准备 BAT 技术面试的候选人。 使用场景及目标:①深入理解 C++ 编程语言特性及其标准模板库的实现细节;②掌握常见的数据结构和算法设计技巧;③熟悉操作系统层面的知识,如内存管理、进程通信等;④提高解决实际工程问题的能力,特别是在大规模数据处理方面。 其他说明:文档中的题目难度较大,旨在考察应聘者的综合能力,包括但不限于理论知识的应用、代码实现的质量、解决问题

    基于Carsim与Simulink的ACC自适应巡航控制系统联合仿真及优化

    内容概要:本文详细介绍了如何利用Carsim进行车辆动力学建模并结合Simulink实现ACC(自适应巡航控制)系统的联合仿真。文中涵盖了从环境配置、模型搭建、控制算法设计到最后的数据同步等多个方面。尤其强调了在配置过程中容易出现的问题及其解决方案,如单位制转换、采样时间同步以及PID控制器参数调优等。此外,作者分享了一些实用的经验技巧,如通过状态机实现跟车模式切换、采用抗饱和PID结构提高控制稳定性等。 适用人群:从事汽车电子控制系统开发的技术人员,尤其是对ACC系统感兴趣的工程师。 使用场景及目标:帮助开发者掌握Carsim与Simulink联合仿真的全流程,确保能够成功搭建并优化ACC控制系统,最终达到稳定可靠的跟车效果。 其他说明:文中提供了大量MATLAB/Simulink代码片段作为实例指导,有助于读者更好地理解和应用相关知识点。同时,针对可能出现的各种问题给出了详细的排查步骤和技术建议。

    计算机二级VB考试_试题(真题)及详细答案.pdf

    计算机二级VB考试_试题(真题)及详细答案.pdf

    计算机仿真作业3.pdf

    计算机仿真作业3.pdf

    华为NAC技术白皮书:网络接入控制解决方案及其应用场景

    内容概要:本文档详细介绍了华为的NAC(网络接入控制)技术,涵盖802.1X认证、MAC认证和Portal认证等多种认证方式。NAC作为一种‘端到端’的安全架构,旨在保障网络安全接入,防止非法终端接入和合法终端越权访问。文档还探讨了各种认证方式的具体实现细节,包括认证流程、配置命令和故障处理方法。此外,文档提供了具体的组网应用实例,帮助用户理解和部署NAC解决方案。 适合人群:网络管理员、信息安全专家、IT运维人员和技术支持团队。 使用场景及目标:适用于企业内部网络的安全管理和控制,特别是需要对用户终端进行严格认证和授权的场景。通过NAC技术,可以提高网络安全性,防止未经授权的访问,保护核心资源。 其他说明:本文档不仅涵盖了理论和技术背景,还包括了详细的配置指南和故障排除步骤,有助于用户全面掌握NAC技术的实际应用。

Global site tag (gtag.js) - Google Analytics