我对Web服务进行SOAP调用,然后在日志中显示这些错误(我认为是信息/警告):
INFO: Received WS-I BP non-conformant Unquoted SoapAction HTTP header: myAction
Sep 28, 2016 7:13:54 AM com.sun.xml.ws.transport.http.HttpAdapter fixQuotesAroundSoapAction
此警告是否会导致实际问题?或者fixQuotesAroundSoapAction方法在看到它时是否解决了问题?我想知道在日志中看到这两行应该是关注还是我可以忽略它们?
答案 0 :(得分:1)
如果你看一下com.sun.xml.internal.ws.transport.http.HttpAdapter类,有一个名为“fixQuotesAroundSoapAction”的方法,带有逻辑,
如果SOAPAction不为null并且它不以双引号开头并以双引号结束,它会记录上述警告并通过在SOAPAction字符串的开头和结尾添加双引号来修复。
您可以忽略或通知Web服务提供商有关SOAPAction http标头的信息。
这是方法,
private String fixQuotesAroundSoapAction(String soapAction) {
if(soapAction == null || soapAction.startsWith("\"") && soapAction.endsWith("\"")) {
return soapAction;
} else {
LOGGER.warning("Received WS-I BP non-conformant Unquoted SoapAction HTTP header: " + soapAction);
String fixedSoapAction = soapAction;
if(!soapAction.startsWith("\"")) {
fixedSoapAction = "\"" + soapAction;
}
if(!soapAction.endsWith("\"")) {
fixedSoapAction = fixedSoapAction + "\"";
}
return fixedSoapAction;
}
}
答案 1 :(得分:1)
如果您使用 Log4J,请尝试 https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jul。
将其添加到代码中:
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
将此添加到xml配置文件
<Loggers>
...
<Logger name="com.sun.xml.internal.ws.transport.http.HttpAdapter" level="OFF">
</Logger>
...
</Loggers>
答案 2 :(得分:0)
这实际上是一个简单的问题,您没有在 SOAPAction HTTPHeader 中提供引号 (") 字符串。只需放置字符串 SOAPAction = "\"myAction\""
。这 " 将在您的 HTTPHeader 中添加引号,并且恼人的警告将永远消失。