无法在SOAP呼叫中查看回复

时间:2019-04-26 12:42:15

标签: java soap

我目前正在对我无法控制的特定域进行自定义SOAP调用。我知道SOAP调用失败,但是我似乎无法抓住返回的(错误)值。

现在我正在使用以下代码:

                    Document document = convertStringToDocument(this.MeldingString);
                // System.out.println(document);
                SOAPConnectionFactory myFct = SOAPConnectionFactory.newInstance();
                MessageFactory myMsgFct = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
                SOAPMessage message = myMsgFct.createMessage();
                SOAPConnection myCon = myFct.createConnection();

                // Adding parts
                SOAPPart mySPart = message.getSOAPPart();
                SOAPEnvelope myEnvp = mySPart.getEnvelope();

                // Escape the password for usage in header
                String escpwd = StringEscapeUtils.escapeJava(this.Password);

                // Header
                MimeHeaders headers = message.getMimeHeaders();
                headers.setHeader("Content-Type", "application/soap+xml;charset=UTF-8");
                headers.setHeader("Authorization", this.Username + ":" + escpwd);

                // Body
                SOAPBody body = myEnvp.getBody();
                body.addDocument(document);

                // Sending
                Core.getLogger("GetResultSOAPmsg").trace("Started");
                URL endPt = new URL(
                        "URL-TO-MY-SERVICE");
                System.setProperty("java.net.useSystemProxies", "true");
                try {
                    SOAPMessage reply = myCon.call(message, endPt); "UTF-8");

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

这会产生以下错误,这在整个SO中都很常见:

SEVERE: SAAJ0537: Invalid Content-Type. Could be an error message instead of a SOAP message
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Invalid Content-Type:text/html. Is this an error message instead of a SOAP response?

现在我已经阅读了大多数这些主题,它们解释了通常如何解决此问题(命名空间,转义URL等),但是我似乎无法弄清楚我的情况是什么问题。这是一项私人服务,不幸的是,在这种情况下,另一端无法协助我。错误可能是从错误的证书到拼写错误的URL。

因此,我想在屏幕上实际看到拨打电话时收到的实际答复。这将对我有帮助(假设它类似于503、404或其他页面)。无论我做什么以及在哪里设置断点,“回复”都没有任何信息。因为它无法创建上述对象,但是整个消息似乎都被丢弃了,这在某种意义上是合理的。

在放弃呼叫之前,我可以通过什么方式查看呼叫的实际答复?

1 个答案:

答案 0 :(得分:0)

我认为您的标题有问题

headers.setHeader("Content-Type", "application/soap+xml;charset=UTF-8");

尝试类似

headers.setHeader("Content-Type", "application/xml;charset=UTF-8");

headers.setHeader("Content-Type", "application/json;charset=UTF-8");

取决于服务接受的内容类型