日期:2014-05-17  浏览次数:20705 次

axis2开发WebSerivce,传入String类型 查询参数XML格式,接口返回:Xml输入参数格式不正确
本帖最后由 Smile_____ 于 2014-01-16 16:29:27 编辑

对Web service 不是很熟悉 速求一大神, 每次都返回Xml输入参数格式不正确 

        /**
 * 测试查询航班
 */
public  static  void testRPCs(){
//保存查询参数XML格式
StringBuffer xml = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
xml.append("<ParamsXml>");
xml.append("<Params>");
xml.append("<AgentID>GDDX</AgentID>");
xml.append("<DepartureAirport>CAN</DepartureAirport>");//三字码
xml.append("<ArriveAirport>PEK</ArriveAirport>");//三字码
xml.append("<DepartureDate>2014-01-18</DepartureDate>");//时间
xml.append("<CarrierCode></CarrierCode>");//航空公司二字码,可空
xml.append("<FS>D</FS>");//D:直达,N:中转
xml.append("</Params>");
xml.append("</ParamsXml>");

try {  


      // axis2 服务端  
      String url = "http://ws04.itour.cn:8084/ItourAgentCRSService.asmx?wsdl";  
  
      // 使用RPC方式调用WebService  
      RPCServiceClient serviceClient = new RPCServiceClient();  
      // 指定调用WebService的URL  
      EndpointReference targetEPR = new EndpointReference(url);  
      Options options = serviceClient.getOptions();  
      //确定目标服务地址  
      options.setTo(targetEPR);  
      //确定调用方法  
      options.setAction("http://itour.cn/AV");  
  
      //指定要调用的sayHelloToPerson方法及WSDL文件的命名空间 
      QName qname = new QName("http://itour.cn/","AV");  
      
      // 指定AV方法的参数值  
      Object[] parameters = new Object[]{xml.toString()};  
        
      // 调用方法一 传递参数,调用服务,获取服务返回结果集  
      OMElement element = serviceClient.invokeBlocking(qname, parameters);  
      //值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。  
      //我们可以对之灵活应用,下面我取第一个元素值,并打印之。因为调用的方法返回一个结果  
      String result = element.getFirstElement().getText();  
      System.out.println(result);  
  
    } catch (AxisFault e) {  
      e.printStackTrace();  
    }  

}

//main方法
public static void