#web-services #soap #request-headers
#веб-службы #soap #заголовки запросов
Вопрос:
Я вызываю SOAP-вызов веб-службы, который затем показывает эти ошибки (на самом деле, я думаю, info / warning) в журналах:
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 устраняет проблему, когда он ее видит? Мне интересно, должно ли беспокоить появление этих двух строк в журналах или я могу их игнорировать?
Ответ №1:
Если вы посмотрите на com.sun.xml.internal.ws.transport.http.Класс HTTPAdapter, существует метод с именем «fixQuotesAroundSoapAction» с логикой ,
если значение SOAPAction не равно null и оно не начинается с двойных кавычек и не заканчивается двойными кавычками, указанное предупреждение регистрируется и исправляется путем добавления двойных кавычек в начало и конец строки SOAPAction.
Вы можете игнорировать или уведомлять поставщика веб-услуг о http-заголовке SOAPAction.
Вот метод,
private String fixQuotesAroundSoapAction(String soapAction) {
if(soapAction == null || soapAction.startsWith(""") amp;amp; 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;
}
}
Ответ №2:
Если вы используете Log4J, попробуйте https://mvnrepository.com/artifact/org.apache .ведение журнала.log4j/ log4j-июль.
Добавьте это в код:
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>
Ответ №3:
На самом деле это простая проблема, когда вы не указываете строку в кавычках («) в вашем SOAPAction HttpHeader. Просто поместите строку SOAPAction = ""myAction""
. Это » добавит кавычки в ваш HttpHeader, и раздражающее предупреждение исчезнет навсегда.