[code="java"]package axis2test;
import java.util.Iterator;
import javax.xml.namespace.QName;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.impl.llom.soap11.SOAP11HeaderBlockImpl;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.Handler;
import org.apache.axis2.handlers.AbstractHandler;
public class HandlerTest extends AbstractHandler implements Handler {
public InvocationResponse invoke(MessageContext arg0) throws AxisFault {
SOAPEnvelope envelope = arg0.getEnvelope();
SOAPHeader header = envelope.getHeader();
return InvocationResponse.CONTINUE;
}
}
[/code]
我已经获取到了 header .header 信息是
[code="java"]
cp:usernamexy/cp:username
cp:passwd123456/cp:passwd
/cp:MessageHeader
/soapenv:Header
[/code]
请问如何获取 里面的username和passwd呢。试了header的好多方法都不行。
前段时间遇到过这样的问题,主要是调用.net webservice如何去获取header信息。
你已经获得了header,但是如何获取具体的某个值呢。在api上提供了 一些方法,但是通过测试,这些方法获取不到。最后使出杀手锏。将header转为OMElement,也就是种对象数组的形式,然后遍历,如果
[code="java"]
String username = "";
for(OMElement om:header.getChildNodes){ //这里可能函数有些不对,但是方法正确
if(om.getName() == "username"){
username = om.getValue();
}}
[/code]