java 用xfire发布 webservice
我在android下 用ksoap调用没问题。
但是 现在要做一个head身份验证。 我在网络上找了一个xfire的例子,用android访问时,一直报“必须包含身份验证” ,我跟踪了一下错误 发现
Element token = cfx.getInMessage().getHeader().getChild("AuthenticationToken");
的token一直是null  没有获取到值  这是为什么呢 是我android调用的方式不对? 有经验的请不吝赐教!
android ksoap 调用head代码:Element[] header = new Element[1]; 
header[0] = new Element().createElement(NAMESPACE,"AuthenticationToken"); 
header[0].setAttribute(NAMESPACE,"Username","xiebuqing");   
header[0].setAttribute(NAMESPACE,"Password","xiebuqing");  
envelope.headerOut=header; 
envelope.bodyOut = request;
envelope.dotNet = true;

解决方案 »

  1.   

    如果有.net的调用方式 也可以  做下测试!  谢谢!(.net的要有具体步骤)
      

  2.   

    不断地监控和测试之后调通了  发现是java那边的问题。获取head的信息方法不对。
    大致的问题是在,cfx.getInMessage().getHeader().getChild()时 网络上的资料都是只传一个"类名"(AuthenticationToken) 
    我试着调用它的另一个重载方法
    getChild("AuthenticationToken",Namespace.getNamespace("http://192.168.0.109:8080/smartweb/"));
    加了一个命名空间的参数 就可以获取到header信息,后面获取内容也是一样。
    token.getAttributeValue("Username",Namespace.getNamespace("http://192.168.0.109:8080/smartweb/"));
    这样就可以获取到header的内容了!
    希望可以帮到正在困惑的你 ^ ^
    没人回复,来几个人接分,下午把帖结了!
      

  3.   

    求支持,我也遇到这个问题了,是android端调用header是否不变?是java后端写的webservice做修改吗?
      

  4.   

    帮忙看看这个帖子:http://bbs.csdn.net/topics/390315943
    谢谢