<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://ws.flightoperationfmf.md.ws.ch.com/">
        <soapenv:Header>
   <username>md</username>
   <password>md</password>
   </soapenv:Header>
   <soapenv:Body>
      <ws:queryFlightOperationFmF>
         <!--Optional:-->
         <startDate>2017-12-04 08:00:01</startDate>
         <!--Optional:-->
         <endDate>2017-12-06 09:10:30</endDate>
         <!--Optional:-->
         <tableName>?</tableName>
         <!--Optional:-->
         <pageNo>?</pageNo>
         <!--Optional:-->
         <pageSize>?</pageSize>
      </ws:queryFlightOperationFmF>
   </soapenv:Body>
</soapenv:Envelope>

解决方案 »

  1.   

    如果有wsdl,可以用cxf工具生成客户端,没有的话自己写参考
    http://blog.csdn.net/oscar999/article/details/40340819
      

  2.   

                    IFlightOperationFmFInfoServiceLocator fm = new IFlightOperationFmFInfoServiceLocator();
    IFlightOperationFmFInfoServiceSoapBindingStub bind = (IFlightOperationFmFInfoServiceSoapBindingStub) fm.getIFlightOperationFmFInfoPort();


    SOAPHeaderElement headerElement = new SOAPHeaderElement("", "");
    headerElement.setMustUnderstand(false);
    headerElement.setPrefix("");
    SOAPElement username = headerElement.addChildElement("username");
    SOAPElement password = headerElement.addChildElement("password");
    username.addTextNode("md");
    password.addTextNode("md");
    bind._createCall().addHeader(headerElement);
    我这样拼的,验证不通过,大佬看看哪里有问题,谢谢
      

  3.   

    < soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns="" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><username>md</username><password>md</password></>
      不知道怎么拼,打印的和服务端发我的正确报文不一样
      

  4.   

    试试加上参数
    SOAPHeaderElement headerElement = new SOAPHeaderElement("", "Header");
    headerElement.setMustUnderstand(true);
    headerElement.setPrefix("");
    SOAPElement username = headerElement.addChildElement("username");
    SOAPElement password = headerElement.addChildElement("password");
    username.addTextNode("md");
    password.addTextNode("md");
    bind._createCall().addHeader(headerElement);
      

  5.   

    <Header soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="1"
        xmlns="http://ws.flightoperationfmf.md.ws.ch.com/"
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <username>md</username>
        <password>md</password>
    </Header>这是打印的报文SOAPHeaderElement headerElement = new SOAPHeaderElement("http://ws.flightoperationfmf.md.ws.ch.com/", "Header");
    headerElement.setMustUnderstand(true);
    headerElement.setPrefix("");
    SOAPElement username = headerElement.addChildElement("username");
    SOAPElement password = headerElement.addChildElement("password");
    username.addTextNode("md");
    password.addTextNode("md");
    bind._createCall().addHeader(headerElement);这是报错Exception in thread "main" AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
     faultSubcode: 
     faultString: 认证异常!!!
     faultActor: 
     faultNode: 
     faultDetail: 
      

  6.   

    soapenv的命名空间是http://schemas.xmlsoap.org/soap/envelope/ ,换这个试试
    不行的话换种写法
    SOAPHeaderElement el = new SOAPHeaderElement(new QName("http://schemas.xmlsoap.org/soap/envelope/", "Header"));
      

  7.   

    最后两招
    headerElement.setPrefix(""); 这个去掉
    再不行 用 new SOAPHeaderElement(Element) 这个,直接将xml字符串转成element 试试
      

  8.   

    怎么转element