gpt4 book ai didi

java - SOAP 与附件 SAAJ

转载 作者:行者123 更新时间:2023-11-30 09:40:41 25 4
gpt4 key购买 nike

我有一个与解析 SOAP 消息相关的问题。
这是消息:

------=_Part_3_5438437.1107262647279

Content-Type: text/xml

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<content>
[...]
</content>
</soap-env:Body>
</soap-env:Envelope>

------=_Part_3_5438437.1107262647279
Content-Type: text/plain; charset=ISO-8859-1

text
------=_Part_3_5438437.1107262647279--

这是我的 Java servlet 的摘录,它应该接收并解析消息:

messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
message = messageFactory.createMessage(mimeHeaders, req.getInputStream());

为了测试 servlet,我使用了 JMeter。我将 SOAP 消息放在 HTTP 请求的原始帖子正文中。在标题中我把这个: 内容类型 multipart/related;boundary=----=_Part_3_5438437.1107262647279

问题一:SAAJ 中的解析似乎有问题,因为调试我看到边界被视为 ----null,好像 = 可以用作标记,仅此而已。所以我从正文和标题中删除了它。这是一个大问题,因为我无法更改收到的输入,但让我们暂时假装我可以。好的,这让我转向问题 2:现在边界被正确解析,但我得到了这个异常:com.sun.xml.messaging.saaj.SOAPExceptionImpl: Bad Content-Type for SOAP Part : text/plain

好的,我相信我知道如何解决它,我必须在 Content-type header 中添加类型: 内容类型 multipart/related;type=text/xml;boundary=-----_Part_3_5438437.1107262647279

是的,但我当然还有另一个讨厌的异常:com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to internalize message 在 com.sun.xml.messaging.saaj.soap.MessageImpl.parseContentType(MessageImpl.java:337)

我正在使用 saaj-impl-1.3.18 和 saaj-api-1.3.3。
Java 版本“1.6.0_29”
Java(TM) SE 运行环境 (build 1.6.0_29-b11-402-11D50b)
Java HotSpot(TM) 64 位服务器 VM(构建 20.4-b02-402,混合模式)

最佳答案

问题 2 的解决方案在于此处的行:

------=_Part_3_5438437.1107262647279

Content-Type: text/xml

它必须消失,否则内容类型默认假定为文本/纯文本。感谢 Brian Joh http://twitter.com/brianwjoh指出这一点。
对于问题编号 1,我简单地通过将边界值放在“之间来解决它。同样适用于类型。

 type="text/xml";boundary="----=_Part_3_5438437.1107262647279"

关于java - SOAP 与附件 SAAJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com