web-services - Extract SOAP custom header information
问题描述
I want to read request header from SOAP incoming request in my Java code for some authorization purpose. I found few work-arounds like using SOAPHandlers and . Code as below :
`package com.cerillion.ccs.framework;
import java.util.HashSet;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.apache.log4j.Logger;
public class ApiSoapHandler implements SOAPHandler<SOAPMessageContext> {
private static final Logger logger = Logger.getLogger(ApiSoapHandler.class.getName());
@Override
public void close(MessageContext arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean handleFault(SOAPMessageContext context) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean handleMessage(SOAPMessageContext context) {
logger.debug("Inside ApiSoapHandler");
try {
SOAPMessage message = context.getMessage();
SOAPHeader header = message.getSOAPHeader();
message.saveChanges();
} catch (SOAPException e) {
logger.error("Error occurred while adding credentials to SOAP header.",
e);
}
return true;
}
@Override
public Set<QName> getHeaders() {
/* QName securityTokenHeader = new QName("urn:com.intertech.secty", "token");
//new QName(“urn:com.intertech.secty”,“username”);
HashSet<QName> headers = new HashSet<QName>();
headers.add(securityTokenHeader);
return headers;*/
return null;
} }`
I ma really curious about to have some other simple alternative rather than writing entire handler just for fetching custom header tag. Is this the only way to read SOAP request header ? Any leads are really appreciated
解决方案
推荐阅读
- r - 如何从R中的数据框列绘制网络图?
- reactjs - React-beautiful-dnd typescript 编译器问题
- javascript - 添加后不久如何在子集合中获取文档?
- php - Laravel 7 自定义登录
- typescript - 如何在没有 getter 和 setter 的情况下即时验证属性?
- xamarin - 从 Xamarin.Forms Webview 中的 javascript 调用 c# 函数
- intellij-idea - 如何修复:不支持的 Gauge 版本(空):此版本的 Gauge Intellij 插件仅适用于 Gauge 版本 >= 0.9.0
- sql - SequelizeDatabaseError:SQLITE_ERROR:没有这样的列:created_at
- java - 如何在 Spring 中为每个客户端配置和构建自定义 RestTemplate?
- react-native - 如何在 React Native 中手动设置应用程序窗口尺寸