最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot接收與響應(yīng)xml報(bào)文請(qǐng)求的實(shí)現(xiàn)

 更新時(shí)間:2023年06月25日 10:41:29   作者:誰(shuí)是誰(shuí)的小確幸  
我們?cè)谶M(jìn)行接口對(duì)接時(shí),會(huì)出現(xiàn)報(bào)文形式的信息傳遞,這篇文章主要給大家介紹了關(guān)于SpringBoot接收與響應(yīng)xml報(bào)文請(qǐng)求的相關(guān)資料,需要的朋友可以參考下

背景

平時(shí)開發(fā)的接口,基本是使用 json 格式的請(qǐng)求報(bào)文。然而,有時(shí)候也避免不了有 xml 報(bào)文請(qǐng)求的場(chǎng)景,最近就遇到了這種情況,在此記錄下。另外,工程中使用的是 controller-service……這種結(jié)構(gòu)。

xml請(qǐng)求報(bào)文:

<?xml?version="1.0"?encoding="UTF-8"??>
<req>
??<tel>15556905765</tel>
??<activityid></activityid>
??<timestamp>1603383430</timestamp>
</req>

xml響應(yīng)報(bào)文:

<?xml?version="1.0"?encoding="UTF-8"??>
<resp>
????<code>200</code>
????<msg></msg>
????<activeflag></activeflag>
</resp>

實(shí)現(xiàn)步驟

第一步,引入必需依賴

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.10</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.14.1</version>
</dependency>

在 jackson-dataformat-xml 包里提供了一系列的 json 與 xml 互轉(zhuǎn)的 API。當(dāng)定義請(qǐng)求或響應(yīng)類時(shí),使用 @JacksonXml 開頭的注解,可以實(shí)現(xiàn) xml 標(biāo)簽字段與 javabean 字段之間的映射。

第二步,自定義請(qǐng)求類和響應(yīng)類

自定義請(qǐng)求類:

@Data
@JacksonXmlRootElement(localName = "req")
public class TestRequest {
    //手機(jī)號(hào)
    @JacksonXmlProperty(localName = "tel")
    private String tel;
 
    //活動(dòng)商品ID
    @JacksonXmlProperty(localName = "activityId")
    private String productId;
 
    @JacksonXmlProperty(localName = "timestamp")
    private Long timestamp;
}

自定義響應(yīng)類:

@Data
@JacksonXmlRootElement(localName = "resp")
public class TestResponse {
    //返回碼
    @JacksonXmlProperty(localName = "code")
    private String code;
    //返回碼信息描述
    @JacksonXmlProperty(localName = "msg")
    private String msg;
    //可參與活動(dòng)標(biāo)志 :1-可參與 2-不可參與
    @JacksonXmlProperty(localName = "activeflag")
    private String activeFlag;
}

注意,當(dāng)xml與實(shí)體類的一些字段名稱相同時(shí),這些字段可以不使用@JacksonXmlProperty注解。

第三步,編寫控制器類和業(yè)務(wù)邏輯

TestController:

@RestController
public class TestController {
    @Resource
    private TestService testService;
 
    @PostMapping(value = "/test"
            , produces = MediaType.APPLICATION_XML_VALUE)
    public String test(@RequestBody TestRequest request)
    {
        return testService.service(request);
    }
}

TestService:

@Slf4j
@Service
public class TestService {
    public String service(TestRequest request){
 
        //request入?yún)⑿r?yàn) .... 省略
 
        //正常情況
        TestResponse response = new TestResponse();
        response.setCode("200");
        response.setMsg("allow sub");
        response.setActiveFlag("1");
        return javaBeanToXml(response);
    }
}

第四步,編寫 javabean 轉(zhuǎn) xml 方法

//XML文件頭
private static final String XML_HEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
public static String javaBeanToXml(Object obj)
{
    String xml = "";
    if (Objects.isNull(obj))
    {
        return xml;
    }
    try
    {
        XmlMapper xmlMapper = new XmlMapper();
        xml = xmlMapper.writeValueAsString(obj);
    } catch (Exception e)
    {
        log.error("javaBeanToXml error, obj={}, xml={}", obj, xml, e);
        return "";
    }
    // 添加xml文件頭
    return XML_HEAD + xml;
}

自測(cè)

這里,使用 postman 工具測(cè)試(Body->raw->XML)

效果如下:

 特此記錄下,就這樣~

總結(jié)

到此這篇關(guān)于SpringBoot接收與響應(yīng)xml報(bào)文請(qǐng)求的文章就介紹到這了,更多相關(guān)SpringBoot接收響應(yīng)xml報(bào)文請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java的@Transactional、@Aysnc、事務(wù)同步問(wèn)題詳解

    Java的@Transactional、@Aysnc、事務(wù)同步問(wèn)題詳解

    這篇文章主要介紹了Java的@Transactional、@Aysnc、事務(wù)同步問(wèn)題詳解,現(xiàn)在我們需要在一個(gè)業(yè)務(wù)方法中插入一個(gè)用戶,這個(gè)業(yè)務(wù)方法我們需要加上事務(wù),然后插入用戶后,我們要異步的方式打印出數(shù)據(jù)庫(kù)中所有存在的用戶,需要的朋友可以參考下
    2023-11-11
  • java怎么設(shè)置代理ip實(shí)現(xiàn)高效網(wǎng)絡(luò)請(qǐng)求

    java怎么設(shè)置代理ip實(shí)現(xiàn)高效網(wǎng)絡(luò)請(qǐng)求

    無(wú)論是在爬蟲、API調(diào)用還是網(wǎng)絡(luò)測(cè)試中,代理IP的使用都變得愈發(fā)重要,本文我們主要來(lái)介紹一下如何在Java中設(shè)置代理IP實(shí)現(xiàn)高效網(wǎng)絡(luò)請(qǐng)求吧
    2024-11-11
  • go語(yǔ)言題解LeetCode88合并兩個(gè)有序數(shù)組示例

    go語(yǔ)言題解LeetCode88合并兩個(gè)有序數(shù)組示例

    這篇文章主要為大家介紹了go語(yǔ)言題解LeetCode88合并兩個(gè)有序數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • MyBatis-Plus的基本CRUD操作大全

    MyBatis-Plus的基本CRUD操作大全

    本文介紹了MyBatis-Plus框架中BaseMapper和IService兩大核心組件的使用,,通過(guò)示例代碼演示了如何實(shí)現(xiàn)數(shù)據(jù)插入、刪除、修改、查詢等操作,并展示了條件構(gòu)造器、分頁(yè)查詢、事務(wù)處理等實(shí)用功能,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Java隨機(jī)值設(shè)置(java.util.Random類或Math.random方法)

    Java隨機(jī)值設(shè)置(java.util.Random類或Math.random方法)

    在編程中有時(shí)我們需要生成一些隨機(jī)的字符串作為授權(quán)碼、驗(yàn)證碼等,以確保數(shù)據(jù)的安全性和唯一性,這篇文章主要給大家介紹了關(guān)于Java隨機(jī)值設(shè)置的相關(guān)資料,主要用的是java.util.Random類或Math.random()方法,需要的朋友可以參考下
    2024-08-08
  • 淺談Spring Bean的基本配置

    淺談Spring Bean的基本配置

    這篇文章主要介紹了淺談Spring Bean的基本配置,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java Spring的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • 淺談Timer和TimerTask與線程的關(guān)系

    淺談Timer和TimerTask與線程的關(guān)系

    下面小編就為大家?guī)?lái)一篇淺談Timer和TimerTask與線程的關(guān)系。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • log4j與slf4j的使用與區(qū)別詳解

    log4j與slf4j的使用與區(qū)別詳解

    這篇文章主要介紹了log4j與slf4j的使用與區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • mybatis空值插入處理的解決方法

    mybatis空值插入處理的解決方法

    本文主要介紹了mybatis空值插入處理的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot中的條件注解使用示例詳解

    SpringBoot中的條件注解使用示例詳解

    SpringBoot條件注解用于動(dòng)態(tài)控制Bean創(chuàng)建與配置加載,基于@Conditional機(jī)制,支持按類、Bean、屬性等條件判斷,廣泛應(yīng)用于多數(shù)據(jù)源等場(chǎng)景,提升應(yīng)用靈活性與智能化,接下來(lái)通過(guò)本文給大家講解SpringBoot中的條件注解使用,感興趣的朋友一起看看吧
    2025-08-08

最新評(píng)論

涞水县| 昌邑市| 杭州市| 黄骅市| 油尖旺区| 安平县| 克山县| 平原县| 镇坪县| 宁明县| 年辖:市辖区| 叙永县| 霍山县| 舞钢市| 鄂州市| 渑池县| 霍林郭勒市| 黔江区| 屏东市| 自治县| 大同市| 五莲县| 新宾| 田阳县| 隆化县| 鄂托克旗| 同仁县| 上饶市| 香港 | 渝北区| 静海县| 桂东县| 花莲市| 彩票| 八宿县| 赞皇县| 精河县| 长海县| 靖边县| 昌乐县| 伊宁县|