问题描述
我有一个 XML 请求和媒体类型 TEXT/XML 的响应。
我正在尝试在 Spring Boot 中序列化和反序列化请求和响应。
请求正文如下。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://ws">
<soapenv:Header />
<soapenv:Body>
<ws:doKF>
<parameterIn><![CDATA[<KFWS>
<RqUID>0f73a59f-8388-492e-b17d-ba1fb1b1d2fd</RqUID>
<ClientApp>A</ClientApp>
<SignOn>
<Username>web</Username>
<Password>Web@123</Password>
</SignOn>
<CalistofflineRq>
<CR>123456</CR>
</CalistofflineRq>
</KFWS>]]></parameterIn>
</ws:doKF>
</soapenv:Body>
</soapenv:Envelope>
响应如下
<?xml version="1.0" encoding="UTF-8"?>
<NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/">
<NS1:Body>
<NS2:doKFResponse xmlns:NS2="http://ws">
<NS2:parameterOut>
<KFWS>
<RqUID>0f73a59f-8388-492e-b17d-ba1fb1b1d2fd</RqUID>
<LogID>48151382-77bc-11eb-8dbc-0a05010a0000</LogID>
<Status>
<StatusCode>0</StatusCode>
<StatusDesc>Success</StatusDesc>
</Status>
<CalistofflineRs>
<ReturnCode>0</ReturnCode>
<ReturnDesc>Success</ReturnDesc>
<CaCards>
<CaCard>
<CaMasked>490061</CaMasked>
<CaNoToken>2140</CaNoToken>
<CaToken>2140</CaToken>
<Name>xxxxxxxxxxxxxxx</Name>
<Type>Primary</Type>
<Class>SMART</Class>
<Status>Expired</Status>
<Number>20000</Number>
</CaCard>
<CaCard>
<CaMasked>4904061</CaMasked>
<CaNoToken>2140</CaNoToken>
<CaToken>2140</CaToken>
<Name>xxxxxxxxxxxxxxx</Name>
<Type>Primary</Type>
<Class>SMART</Class>
<Status>Expired</Status>
<Number>20000</Number>
</CaCard>
</CaCards>
</CalistofflineRs>
</KFWS>
</NS2:parameterOut>
</NS2:doKFResponse>
</NS1:Body>
</NS1:Envelope>
我在字符串中使用 Feign 客户端获得了响应,我需要将响应反序列化为 JSON
解决方法
看起来像是 SOAP 响应。
请参阅显示如何使用此类服务的 Spring tutorial。
,您可以使用 Jackson 来序列化和反序列化您的 xml。您需要查看您的 xml 结构并创建正确的 POJO。在这里您可以找到如何进行序列化/反序列化 https://www.baeldung.com/jackson-xml-serialization-and-deserialization