部署了一个需要提供身份凭证的webservice,在.net 中。可以通过NetworkCredential(用户名, 密码)提交身份验证,调用无误。现在,想在android中调用这个webservice,用 usernameToken,失败,请问,该如何在ksoap2中提交身份凭证啊?我的代码如下:
Element usernameElement = new Element().createElement(OASIS_SECURITY_XSD_URL, "user name");
usernameElement.addChild(Node.TEXT, "test1");
Element passwordElement = new Element().createElement(OASIS_SECURITY_XSD_URL,"password");
passwordElement.addChild(Node.TEXT, "test1");
Element usernameTokenElement = new Element().createElement(OASIS_SECURITY_XSD_URL, "NetworkCredential");
usernameTokenElement.addChild(Node.ELEMENT, usernameElement);
usernameTokenElement.addChild(Node.ELEMENT, passwordElement); Element securityElement = new Element().createElement(OASIS_SECURITY_XSD_URL,"Security");
securityElement.setPrefix(null, OASIS_SECURITY_XSD_URL);
securityElement.addChild(Node.ELEMENT, usernameTokenElement);
        
Element [] s = {securityElement};
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true; //.net 支持
envelope.headerOut =s;这个代码调用失败

解决方案 »

  1.   

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
     Element[] header = new Element[1];   
             header[0] = new Element().createElement(AppConstant.URL.NAMESPACE,"header"); //AuthHeader is the class name of my authentication   
             header[0].setAttribute(AppConstant.URL.NAMESPACE,"username","admin");   
             header[0].setAttribute(AppConstant.URL.NAMESPACE,"password","admin");  
            envelope.headerOut=header;