现在要做一个项目,调用人家写好的webservice。发送一个 soap 消息,他会返回一个 soap 消息。
qq有一个检查qq在线状态的,我做出来了。打印发送的消息,只有 <soap:Body> 里面的。
我现在要做的是要包含 <soap:header> 的。
由于是自己上网查的,所以就只能做到这个地步。还不到方向对不对。
请 有这方面经验的朋友,指点一下。万分感谢
 

解决方案 »

  1.   

    我不是很明白,你为什么要去hander中的内容! 调用的服务中某些信息只出现在HANDER中 而没出现在BODY中吗?
      

  2.   

    虽然我不大清楚调用服务的具体代码是怎样的以及WSDL文件的内容!但我还是写个简单的例子供你参考吧!
    // 服务接口
    @WebService
    public interface IHelloService{
       Customer selectMaxAgeCustomer(@WebParam(name="C1",header=true) Customer c1,Customer c2);
    }// 客户端调用代码:(这里我使用CXF调用方式)
    JaxWsProxyFactoryBean soap = new JaxWsProxyfactoryBean();
    soap.setAddress(...);
    soap.setServiceClass(...);
    Object o = (Object)soap.create();
    IHelloService helloSvc = (IHelloService)o;Customer c1 = new Customer();
    c1.setId(1);
    c1.setName("A");Customer c2 = new Customer();
    c2.setId(2);
    c2.setName("B");// 注意:这里是区别
    SelectMaxAgeCustomer sms = new SelectMaxAgeCustomer();
    sms.setC2(c2);// 调用方法
    Customer custom = helloSvc.selectMaxAgeCustomer(sms,c1);
    ...注意到服务端接口方法中的第一个参数是customer类型的,而客户端这边的参数是SelectMaxAgeCustomer而不是Customer!楼主可以使用CXF的日志拦截查看控制台中的输出信息!