Boa noite, Por padrão, ao lançar exceção, o SOAP envia o HTTP status 500. É possível customizar este Status de alguma forma antes de enviar ao cliente? Obrigado.
Boa noite, Por padrão, ao lançar exceção, o SOAP envia o HTTP status 500. É possível customizar este Status de alguma forma antes de enviar ao cliente? Obrigado.
Olá Rafael, tudo bem?
Sim, é possível customizar o status HTTP do fault no JAX-WS. Para fazer isso, você pode utilizar a classe javax.xml.ws.soap.SOAPFaultException
para criar uma exceção personalizada com o status desejado.
Por exemplo, se você deseja enviar um status HTTP 400 (Bad Request), você pode fazer o seguinte:
import javax.xml.ws.soap.SOAPFaultException;
import javax.xml.soap.SOAPFault;
import javax.xml.namespace.QName;
...
try {
// Seu código que pode lançar uma exceção
} catch (Exception e) {
SOAPFaultException soapFaultException = new SOAPFaultException(
createSOAPFault("Sua mensagem de erro aqui", "400")
);
throw soapFaultException;
}
...
private SOAPFault createSOAPFault(String errorMessage, String statusCode) {
try {
SOAPFactory soapFactory = SOAPFactory.newInstance();
SOAPFault soapFault = soapFactory.createFault();
soapFault.setFaultString(errorMessage);
soapFault.setFaultCode(new QName("http://schemas.xmlsoap.org/soap/envelope/", "Client"));
soapFault.addFaultReasonText(errorMessage);
// Definindo o status HTTP customizado
soapFault.addFaultReasonText("HTTP Status: " + statusCode, "en");
return soapFault;
} catch (SOAPException e) {
throw new RuntimeException("Erro ao criar SOAPFault", e);
}
}
Dessa forma, você pode personalizar o status HTTP do fault de acordo com suas necessidades.
Espero ter ajudado e bons estudos!