当前位置: 代码迷 >> Android >> .net中透过NetworkCredential提供的凭证,在ksoap2中通过什么Element提交
  详细解决方案

.net中透过NetworkCredential提供的凭证,在ksoap2中通过什么Element提交

热度:33   发布时间:2016-05-01 12:34:30.0
.net中通过NetworkCredential提供的凭证,在ksoap2中通过什么Element提交?
部署了一个需要提供身份凭证的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;

这个代码调用失败
------解决方案--------------------
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; 
  相关解决方案