【问题标题】:Xml tags printing differently in Restcontroller在 Restcontroller 中以不同方式打印的 Xml 标签
【发布时间】:2020-10-07 12:29:51
【问题描述】:

我在 spring 中使用控制器进行后期映射

@PostMapping(value ="/HttpNoRespAdapter",consumes = { MediaType.APPLICATION_FORM_URLENCODED_VALUE, MediaType.APPLICATION_XML_VALUE}, produces=MediaType.APPLICATION_XML_VALUE)
    protected String process(@RequestBody String request, HttpServletResponse response)  {


        }

我将 requestbody 中的任何内容作为字符串,以下 xml 应该出现

<REQ><FEATURE>DELIVERY-RECEIPT</FEATURE><TIME-STAMP><![CDATA[20200925190730]]></TIME-STAMP><TRANSACTION-ID><![CDATA[71554]]></TRANSACTION-ID><SMPP-ID><![CDATA[airtel]]></SMPP-ID><COMMAND-ID><![CDATA[5]]></COMMAND-ID><OA><![CDATA[8407600010]]></OA><DA><![CDATA[555]]></DA><DCS><![CDATA[0]]></DCS><SMS><![CDATA[stat:DELIVRD err:000 Text:silent]]></SMS><MESSAGE-ID><![CDATA[19]]></MESSAGE-ID></REQ>

但它来了

%3CREQ%3E%3CFEATURE%3EDELIVERY-RECEIPT%3C%2FFEATURE%3E%3CTIME-STAMP%3E%3C%21%5BCDATA%5B20201007175019%5D%5D%3E%3C%2FTIME-STAMP%3E%3CTRANSACTION-ID%3E%3C%21%5BCDATA%5B60564%5D%5D%3E%3C%2FTRANSACTION-ID%3E%3CSMPP-ID%3E%3C%21%5BCDATA%5Bairtel%5D%5D%3E%3C%2FSMPP-ID%3E%3CCOMMAND-ID%3E%3C%21%5BCDATA%5B5%5D%5D%3E%3C%2FCOMMAND-ID%3E%3COA%3E%3C%21%5BCDATA%5B8007600010%5D%5D%3E%3C%2FOA%3E%3CDA%3E%3C%21%5BCDATA%5B555%5D%5D%3E%3C%2FDA%3E%3CDCS%3E%3C%21%5BCDATA%5B0%5D%5D%3E%3C%2FDCS%3E%3CSMS%3E%3C%21%5BCDATA%5Bid%3A69+sub%3A001+dlvrd%3A001+submit+date%3A2010071750+done+date%3A2010071750+stat%3ADELIVRD+err%3A000+Text%3Asilent%5D%5D%3E%3C%2FSMS%3E%3CMESSAGE-ID%3E%3C%21%5BCDATA%5B69%5D%5D%3E%3C%2FMESSAGE-ID%3E%3C%2FREQ%3E=

xmltags 被错误地替换。我该如何解决这个问题??

【问题讨论】:

  • 有什么java方法或者解析技术可以避免这种情况吗??
  • 我认为它正在转换为 UTF -8 。有什么方法可以解码吗??

标签: java spring spring-boot rest xml-parsing


【解决方案1】:

尝试使用 java.net.URLDecoder:

request = URLDecoder.decode(request, "UTF-8");

【讨论】:

  • 它正在工作,但是一个额外的字符来了,我怎样才能单独删除结束字符??
  • 哪个额外的标签?
  • "=" 即将结束,这再次导致解析异常
  • 嗯,它在请求中,不能被 URLDecoder 删除。如果您需要为 XML 解析准备此字符串,您可以通过调用 request = request.substring(0, request.lastIndexOf("&gt;") + 1); 在最后去除不需要的字符。
  • docs.google.com/document/d/… 请参考这个,你可以看到结束标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 2017-07-26
  • 2021-05-07
相关资源
最近更新 更多