jaxws-soap服务返回400而不是soapfault

mklgxw1f  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(222)

我正在使用 Spring Boot 以及使用 javax.xml.ws.handler.soap.SOAPHandler 检查传入的soap请求是否具有特定的http报头,其中包含期望值。如果它没有预期的头&值,那么我必须抛出sc\u bad\u request http status。
要求将响应标记为400(sc\u bad\u request),没有soap错误。这就是我坚持的地方。
我也不确定是否需要使用 SOAPHandler 检查http头或使用servlet Filter 这样我就可以阻止任何错误的请求。非常感谢您的帮助。
下面是我的 handleMessage 实施。

public boolean handleMessage(SOAPMessageContext context) {
        Boolean outbound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
        if (!outbound) {
            try {
                HttpServletRequest httpRequest = (HttpServletRequest) context.get(SOAPMessageContext.SERVLET_REQUEST);

                String acceptHdr = httpRequest.getHeader("Accept");
                if( EXPECTED_MEDIA_TYPE != acceptHdr) {
                    System.out.println("400 bad request");
                    // how to set the SC_BAD_REQUEST to the response. 

                    return false;
                }
            } catch (SOAPException soapException) {
            } finally {
            }
        }
        return true;
    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题