• RestTemplete


    RestTemplete是由spring提供的,可以用来模拟浏览器进行服务调用的封装好的Api,和Apache 的HttpClient功能相同,在分布式系统中可以用来服务之间的调用。

    开发步骤:

    1.引入jar包

    <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>

    2.定义通信数据模型

    package com.yzdc.in.model;
    
    import java.io.Serializable;
    
    public class MSG implements Serializable{
        String status;
    
        Object data;
    
        public MSG() {
        }
    
        public MSG(String status) {
            this.status = status;
        }
        
        public MSG(String status, Object data) {
            this.status = status;
            this.data = data;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    
        public String getStatus() {
            return status;
        }
    
        public void setStatus(String status) {
            this.status = status;
        }
        
    }

    3.编写被调用方的Restful风格的Api

    @RequestMapping(value = "message_consumer",method = RequestMethod.POST,consumes="application/json")
        @ResponseBody
        public MSG receiveMessage(@RequestBody ReportData reportData){
    
            genetatorService.generatorMessage(reportData.getEquipId(),reportData.getThresholdId(),reportData.getValue());
    
            return new MSG("200");
        }

    4.实例化RestTemplete(交给spring)

    spring-mvc.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    
        <mvc:annotation-driven/>
    
        <!-- 扫描controller(controller层注入)-->
        <context:component-scan base-package="com.yzdc.in.controller"/>
    
        <mvc:view-controller path="/" view-name="index"/>
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="order" value="1"/>
            <property name="prefix" value="/WEB-INF/views/"/>
            <property name="suffix" value=".jsp"/>
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        </bean>
    
        <!-- Client -->
        <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
            <property name="messageConverters">
                <list>
                    <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                        <property name="supportedMediaTypes">
                            <list>
                                <value>application/json;charset=UTF-8</value>
                            </list>
                        </property>
                    </bean>
                </list>
            </property>
        </bean>
    </beans>

    4.调用方使用RestTemplete调用:

    注入RestTempete
    
    @Autowired
        private RestTemplate restTemplate;
    
    调用url:
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<ReportData> entity = new HttpEntity<ReportData>(reportData,headers);
    MSG msg = restTemplate.postForObject("http://localhost:8016/minapp/alarm/generator/message_consumer",entity,MSG.class);
  • 相关阅读:
    洛谷P2294 [HNOI2005]狡猾的商人
    洛谷P2119 魔法阵
    Navicat中怎样将SQLServer的表复制到MySql中
    Electron中与Vue集成流程
    Electron中通过net的API发出HTTP请求
    Electron中实现菜单、子菜单、以及自带操作事件
    Eclipse中怎样使用ERMaster进行单表设计并导出为DDL
    Eclipse中怎样安装数据库建模工具ERMaster插件
    Eclipse中安装插件时提示:No repository found containing: osgi.bundle,org.eclipse.emf,2.8.0.v20180706-1146
    Winform中设置ZedGraph鼠标悬浮显示线上的点的坐标并自定义显示的内容
  • 原文地址:https://www.cnblogs.com/inspred/p/10491160.html
Copyright © 2020-2023  润新知