0

我已经编写了一个处理程序来构造我的 SOAP 标头,但我打算将它用于不同的操作。现在根据操作,一些标题名称会发生​​变化。所以我需要知道哪个操作被调用,基于它我将更改我的标题名称。

我的问题就在于此。我正在使用 JAX RPC,这是我正在处理的当前项目的要求。我如何知道我的处理程序中的操作名称?请帮忙。

4

2 回答 2

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();
}
于 2016-04-19T11:24:23.880 回答
-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;
    }

此方法获取消息上下文对象并遍历整个肥皂信封以获取操作名称。

希望这可以帮助一些人。

于 2013-01-02T12:52:02.087 回答