读书人

.net中透过NetworkCredential提供的凭

发布时间: 2012-12-17 09:31:40 作者: rapoo

.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;

读书人网 >Android

热点推荐