当前位置: 首页 > 面试题库 >

从Java中的SOAPMessage获取原始XML

宣瀚
2023-03-14
问题内容

我已经在JAX-WS中设置了SOAP
WebServiceProvider,但是在弄清楚如何从SOAPMessage(或任何Node)对象中获取原始XML时遇到了麻烦。这是我现在所获取的代码示例,也是我尝试获取XML的地方:

@WebServiceProvider(wsdlLocation="SoapService.wsdl")
@ServiceMode(value=Service.Mode.MESSAGE)
public class SoapProvider implements Provider<SOAPMessage>
{
    public SOAPMessage invoke(SOAPMessage msg)
    {
        // How do I get the raw XML here?
    }
}

是否有一种简单的方法来获取原始请求的XML?如果有一种方法可以通过设置其他类型的Provider(例如Source)来获取原始XML,那么我也愿意这样做。


问题答案:

事实证明,通过使用Provider 可以以这种方式获取原始XML:

import java.io.ByteArrayOutputStream;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;

@ServiceMode(value=Service.Mode.PAYLOAD)
@WebServiceProvider()
public class SoapProvider implements Provider<Source>
{
    public Source invoke(Source msg)
    {
        StreamResult sr = new StreamResult();

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        sr.setOutputStream(out);

        try {
            Transformer trans = TransformerFactory.newInstance().newTransformer();
            trans.transform(msg, sr);

            // Use out to your heart's desire.
        }
        catch (TransformerException e) {
            e.printStackTrace();
        }

        return msg;
    }
}

我最终不需要此解决方案,因此我实际上并没有亲自尝试过此代码-可能需要进行一些调整才能正确。但是我知道这是从Web服务获取原始XML的正确途径。

(如果您绝对必须有一个SOAPMessage对象,我不确定如何使这项工作有效,但是,如果仍然要处理原始XML,那么又为什么要使用更高级别的对象呢?)



 类似资料:
  • 我需要从我在春豆中收到的交换对象获取 SOAP 消息。 我有一个骆驼路由,它从服务endpoint路由到我的javabean。Spring宣布的Java Bean和Camel路线如下: 在我的java bean中,我接收交换对象: 问题是我无法从交换中获取SOAP消息。我骆驼网站,在这里我发现我必须使用这个来获取SOAP消息: 但是他给了我< code > NullPointerException

  • 并希望将它们存储为字节数组,因为稍后我需要将它们导出到我的C应用程序中。我注意到了: 将返回公钥的字节,但长度错误。我想它与以下格式有关:公开密钥的和私有密钥的。在寻找帮助时,我发现Java中有一些类,如,可以帮助我获取原始密钥,但我不知道如何做到这一点。

  • 问题内容: 在我的应用程序中,我使用来显示一些日志信息。因为我想突出显示文本中的某些特定行(例如错误消息),所以将设置为“ ”。这样,我可以设置文本格式。 现在,我创建一个JButton,将其内容复制到剪贴板中。这部分很简单,但是我的问题是,当我调用时,我得到了HTML代码,例如: 而不是只获取原始内容: 有没有办法只获取纯文本格式的内容?还是我需要自己将HTML转换为原始文本? 问题答案: 基于

  • 问题内容: 我在相当基本的android开发水平上。 我想从诸如“ http://www.google.com”的页面获取文本。(我将使用的页面只有文本,因此没有图片或类似的东西)所以,要明确:我想将页面上的文本写入应用程序中的字符串等。 我尝试了这段代码,但是我什至不知道它是否能满足我的要求。 无论如何我都无法收到任何文字。我应该怎么做? 问题答案: 从您提供的示例代码中,您甚至没有读取请求的响

  • 问题内容: 有没有办法从获取原始/原始JSON值? 问题: 现在是,但是我需要原始字符串。 有没有办法获得这个原始价值?另外,我无法更改创建方式(例如更改设置),因为它作为参数传递给我的课程… (参考:原始的NJsonSchema问题) 问题答案: 您无法获取原始字符串,无法识别日期字符串并将其转换为自身内部的结构。如果您这样做,则可以看到以下内容: 但是,您可以通过执行以下操作以ISO 8601

  • 问题内容: 我在视图中有一个附加的项目清单: 我正在处理指令中函数中的click事件,将其作为对被单击对象的引用,但是我得到的是对标签的引用,而不是对标签的引用。然后,我必须做这样的事情才能得到: 有没有一种简单的方法可以获取对绑定元素的引用,而无需在我的指令中执行DOM操作? 问题答案: 您需要代替。