SOAP消息的传输过程中编码出错

时间:2019-05-13 10:12:57

标签: java web-services soap character-encoding soapui

上下文

我有一个SOAP Web服务,该服务由JBOSS EAP实例提供,并通过SOAP UI客户端调用。

此Web服务返回的结果中,该Web服务可能会返回这样的XML字符串:

enter image description here

相同的字符串将在SOAP UI客户端中呈现如下:

enter image description here

如您所见,在此消息的传输过程中,某些字符(特别是<)已被编码为&lt;:这是正常现象,因为编码器希望避免将字符串解释为当它只是按原样返回的输出时的标记。

问题

我们观察到的是,当字符串太长时,编码就会出错。我试图分析和理解,这就是我所能获得的:

  • 在字符串末尾,一些<字符照原样保留,未转换为&lt;
  • 很奇怪,通常在服务器端形成一个XML标记:

    <calculationPeriod>
        ...some stuff
    </calculationPeriod>
    

    ...将其第二个c转换为<,这显然完全破坏了XML:

    <cal<ulationPeriod>
        ...some stuff
    </calculationPeriod> 
    

我的问题

老实说,我不知道如何进一步调试此问题。我所能注意到的是:

  • 在Web服务(我控制的堆栈)内部时,通常使用打开标签<来形成响应并将其编码为XML。
  • 一旦出现在SOAP UI客户端中(整个堆栈中都有通用的JBOSS调用和RMI调用),消息就会像这样被破坏。

重要的一点是,这仅在字符串特别长时发生。我有一个长度为8192个字符(在编码之前)的输出就可以了,而另一个长度为9567个字符(在编码前)的输出就出错了,这是这个问题的主题。

道歉:)

很抱歉,我无法提供可复制的用例,也无法使用标题,该标题什么都没有,也没有任何疑问。 我愿意为可能提供帮助的人员提供任何其他信息,并在我清楚地了解问题所在之后重新表述该问题。 我当然在网上看起来很多,但是找不到类似的东西,可能是我搜索的关键词不正确。

0 个答案:

没有答案