java - 如何打印 SOAPMessage

标签 java jakarta-ee soap

SOAPMessage 具有 writeTo() 方法,用于将其内容打印到流中。 但是如何将 SOAPMessage 内容写入 StringBuffer?

代码行“message.writeTo(System.out);”必须修改..

public boolean handleMessage(SOAPMessageContext smc) {
     StringBuffer sbuf = new StringBuffer();
     sbuf.append("\n------------------------------------\n");
     sbuf.append("In SOAPHandler " + HandlerName + ":handleMessage()\n");

     Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

     if (outboundProperty.booleanValue()) {
        sbuf.append("\ndirection = outbound ");
     }
     else {
        sbuf.append("\ndirection = inbound ");
     }

     SOAPMessage message = smc.getMessage();      
     try {
        sbuf.append("\n");
        sbuf.append(message.toString());         
        //message.writeTo(System.out);         
        sbuf.append("\nMessage Desc:");         
        sbuf.append("\n");
     }
     catch (Exception e) {
        sbuf.append("Exception in SOAP Handler: " + e);
     }

     sbuf.append("Exiting SOAPHandler " + HandlerName + ":handleMessage()\n");
     sbuf.append("------------------------------------\n");
     logger.debug(sbuf.toString());
     return true;
  }

最佳答案

好的,我已经解决了这个问题。修改后的代码块如下。

  public boolean handleMessage(SOAPMessageContext smc) {
     StringBuffer sbuf = new StringBuffer();
     sbuf.append("\n------------------------------------\n");
     sbuf.append("In SOAPHandler " + HandlerName + ":handleMessage()\n");

     Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

     if (outboundProperty.booleanValue()) {
        sbuf.append("\ndirection = outbound ");
     }
     else {
        sbuf.append("\ndirection = inbound ");
     }

     SOAPMessage message = smc.getMessage();      
     try {
        sbuf.append("\n");
        sbuf.append(message.toString()); 
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        message.writeTo(baos);                     
        sbuf.append("\nMessage Desc:"+baos.toString());         
        sbuf.append("\n");
     }
     catch (Exception e) {
        sbuf.append("Exception in SOAP Handler: " + e);
     }

     sbuf.append("Exiting SOAPHandler " + HandlerName + ":handleMessage()\n");
     sbuf.append("------------------------------------\n");
     logger.debug(sbuf.toString());
     return true;
  }

关于java - 如何打印 SOAPMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13842182/

相关文章:

java - Google App Engine 数组列表不是受支持的属性类型

java - 如何将 JAR 与仅一个依赖项捆绑在一起

Java Web 服务 - 何时使用 XmlAttribute?

java - Jackson将java组合序列化为json

php - SOAP - PHP 可以更改 'ns1' 标记名称吗?

java - 感知器训练的 Delta 训练规则

java - 我无法打印包含对象和我的类的数组网格?带 Java 的 Netbeans

spring - 带有数据源的 applicationContext.xml 或 hibernate.cfg.xml。区别?

c++ - gSOAP - 如何使用 SSL 和自签名证书

c# -/sharedtypes 等同于 svcutil.exe?