@Override
  public Exception decode(String methodKey, Response response) {
    if (response.body() == null || response.status() == 503)
      return defaultErrorDecoder(methodKey, response);

    SOAPMessage message;
    try {
      message =
          MessageFactory.newInstance(soapProtocol)
              .createMessage(null, response.body().asInputStream());
      if (message.getSOAPBody() != null && message.getSOAPBody().hasFault()) {
        return new SOAPFaultException(message.getSOAPBody().getFault());
      }
    } catch (SOAPException | IOException e) {
      // ignored
    }
    return defaultErrorDecoder(methodKey, response);
  }
SOAPErrorDecoder constructor allowing you to specify the SOAP protocol.

@param soapProtocol a string constant representing the MessageFactory protocol.
@see SOAPConstants#SOAP_1_1_PROTOCOL
@see SOAPConstants#SOAP_1_2_PROTOCOL
@see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
@see MessageFactory#newInstance(String)
soap-jakarta/src/main/java/feign/soap/SOAPErrorDecoder.java