我已经编写了一个处理程序来构造我的SOAP头,但我将把它用于不同的操作。现在,根据操作,一些标题名称会发生变化。所以我需要知道哪个操作被调用,根据哪个操作我将改变我的标题名称。
存在我的问题。我正在使用JAX RPC,这是我正在处理的当前项目的要求。如何在我的处理程序中了解操作名称?请帮助。
答案 0 :(得分:0)
这为您提供服务名称:
@Override
public boolean handleMessage(SOAPMessageContext pContext) {
QName servicio = (QName) pContext.get(MessageContext.WSDL_SERVICE);
return servicio.getLocalPart();
}
这将为您提供操作名称:
@Override
public boolean handleMessage(SOAPMessageContext pContext) {
QName servicio = (QName) pContext.get(MessageContext.WSDL_OPERATION);
return servicio.getLocalPart();
}
答案 1 :(得分:-1)
我对此做了一些研究。互联网上没有很多可用的资料。但是我很幸运。那些像我一样面临类似问题的人可以使用这种方法:
protected String getMethodName(MessageContext mc)
{
String operationName = null;
try
{
SOAPMessageContext messageContext = (SOAPMessageContext) mc;
// assume the operation name is the first element
// after SOAP:Body element
Iterator i = messageContext.
getMessage().getSOAPPart().getEnvelope().getBody().getChildElements();
while ( i.hasNext() )
{
Object obj = i.next();
if(obj instanceof SOAPElement)
{
SOAPElement e = (SOAPElement) obj;
operationName = e.getElementName().getLocalName();
break;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
return operationName;
}
此方法获取消息上下文对象并遍历整个soap信封以获取操作名称。
希望这有助于一些人。