我正在使用 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;
}
暂无答案!
目前还没有任何答案,快来回答吧!