Может ли HTTP-заголовок SOAPAction без кавычек вызывать проблемы в веб-службе?

#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, и раздражающее предупреждение исчезнет навсегда.