Получить XML-ответ от объекта Exception - PullRequest
0 голосов
/ 29 августа 2018

Мне нужно получить XML-ответ от веб-службы. Проблема заключается в том, что статус заголовка этого ответа установлен на HTTP/1.1 400 Bad Request, и это состояние вызывает исключение WebServiceException в Java, что делает невозможным перехват ответа xml (в SoapUI я ясно вижу ответ xml и всю его информацию).

public RegistryResponseType sendRequest(SubmitObjectsRequest submitObjectsRequest) { 

    RegistryResponseType r = null;

    SomeService service = new SomeService();


    try {


        r = service.do(submitObjectsRequest);                   

    } catch (WebServiceException e) {
      //do something to retrieve xml response

    }

    return r;

}

response.xml

                <?xml version="1.0" encoding="UTF-8"?>
                <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
                   <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
                      <wsa:To>xxx</wsa:To>
                      <wsa:MessageID>xxx</wsa:MessageID>
                      <wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action>
                      <wsa:RelatesTo>5c47a3df-12e5-4599-a5aa-0e70457a76e7</wsa:RelatesTo>
                   </soapenv:Header>
                   <soapenv:Body>
                      <soapenv:Fault>
                         <soapenv:Code>
                            <soapenv:Value>soapenv:Sender</soapenv:Value>
                         </soapenv:Code>
                         <soapenv:Reason>
                            <soapenv:Text xml:lang="en-US">Missing upload consent</soapenv:Text>
                         </soapenv:Reason>
                         <axis2ns1:Detail xmlns:axis2ns1="http://www.w3.org/2003/05/soap-envelope">
                            <wsse:InvalidSecurityToken xmlns:wsse="http://docs.oasisopen.org/wsrf/bf-2 bf-2.xsd">
                               <wsrf-bf:Timestamp xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2">2018-08-08T09:43:19.212CEST</wsrf-bf:Timestamp>
                               <wsrf-bf:ErrorCode xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2">PFA12</wsrf-bf:ErrorCode>
                               <wsrf-bf:Description xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2">Missing upload consent</wsrf-bf:Description>
                            </wsse:InvalidSecurityToken>
                         </axis2ns1:Detail>
                      </soapenv:Fault>
                   </soapenv:Body>
                </soapenv:Envelope>

Добавление catch(SOAPFaultException e) не решает проблему. Возможно ли обработать исключение и получить XML?

UPDATE: Как я уже говорил, проблема связана со статусом заголовка, и этот статус зависит от SOAP 1.2 (Проводя некоторые исследования, я обнаружил, что для той же проблемы в SOAP 1.1 статус заголовка был 500) Исключение выдает MessageSenderInterceptor Apache CXF. Есть ли способ переопределить перехватчик?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...