本帖最后由 Smile_____ 于 2014-01-16 16:29:27 编辑

解决方案 »

  1.   

     // 使用RPC方式调用WebService  
                      RPCServiceClient serviceClient = new RPCServiceClient();  
                      // 指定调用WebService的URL  
                      EndpointReference targetEPR = new EndpointReference(url);  
                      Options options = serviceClient.getOptions();  
                      //确定目标服务地址  
    这种方式调用,参数穿的是数据就行了,他会自己去赋值的,传四个值的数组进去就行了。
      

  2.   

     Object[] parameters = new Object[]{xml.toString()};红色这里传四个参数,他会自己去赋值。比如:
     Object[] parameters = new Object[]{"a","b","c","d"};
      

  3.   

    返回结果:<?xml version="1.0" encoding="UTF-8"?><ItourAgentCRSService><Success>01</Success><Errors>Xml输入参数格式不正确</Errors><Result></Result></ItourAgentCRSService>
    一样的 他下面有个需求 是以 查询参数XML格式 还要String 类型很无解
      

  4.   

    请求XML:<?xml version="1.0" encoding="UTF-8"?><ParamsXml><Params><AgentID>GDDX</AgentID><DepartureAirport>CAN</DepartureAirport><ArriveAirport>PEK</ArriveAirport><DepartureDate>2014-01-18</DepartureDate><CarrierCode>CZ</CarrierCode><FS>D</FS></Params></ParamsXml>
    返回结果:<?xml version="1.0" encoding="UTF-8"?><ItourAgentCRSService><Success>01</Success><Errors>Xml输入参数格式不正确</Errors><Result></Result></ItourAgentCRSService>
    一样不知道什么问题 调用无参的方法就行,有参的就格式不正确
      

  5.   

    好巧,我最近也在看这个东西,楼主你可以试试用serviceclient方式调用,具体的可以看
    http://blog.csdn.net/livingtodie/article/details/17297401
    不确定能不能帮到你
      

  6.   

    就是看你的帖子,在学webservice 看到真人了 谢谢谢谢 
      

  7.   

      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,new Class[] { Object.class });加上这个看看
      

  8.   

    报这个错误的原因是服务端在解析的时候操作了处理返回这个信息,个人觉得有可能是因为你有的参数为空了,服务端在解析的时候做了这个判断,   建议你去联系服务端的人,去看错误信息, 并且把你组装的xml发过去给服务端的人,这个问题在调用段根本没法定位的
      

  9.   

    // 指定AV方法的参数值  
                      Object[] parameters = new Object[]{xml.toString()};  
                         
                      // 调用方法一 传递参数,调用服务,获取服务返回结果集  
                      OMElement element = serviceClient.invokeBlocking(qname, parameters)
    接口参数类型是 String 类型 我传object类型 过去有关系吗?invokeBlocking方法需要object类型
      

  10.   

    // 指定AV方法的参数值  
                      Object[] parameters = new Object[]{xml.toString()};  
                         
                      // 调用方法一 传递参数,调用服务,获取服务返回结果集  
                      OMElement element = serviceClient.invokeBlocking(qname, parameters)
    接口参数类型是 String 类型 我传object类型 过去有关系吗?invokeBlocking方法需要object类型
      

  11.   

    不影响,你参数是string的 xml.toString()。
      

  12.   

    public static void main(String[] args) throws IOException {
    String url = "http://127.0.0.1/oms/services/MobileBlogService?wsdl";
    String operateName = "mesDelete";//方法名
    String namespace="";

    Service service = new Service();
    Call call = null;
    try {
    call = (Call) service.createCall();
    call.setTargetEndpointAddress(url);
    call.setOperationName(operateName);   
    call.setReturnType(XMLType.XSD_STRING);
    call.addParameter("serSupplier",    XMLType.XSD_INTEGER,  ParameterMode.IN);
    call.addParameter("serCaller",    XMLType.XSD_INTEGER,  ParameterMode.IN);
    call.addParameter("callerPwd",    XMLType.XSD_INTEGER,  ParameterMode.IN);
    call.addParameter("callTime",    XMLType.XSD_INTEGER,  ParameterMode.IN);
    call.addParameter("callUser",    XMLType.XSD_INTEGER,  ParameterMode.IN);
    call.addParameter("owner",    XMLType.XSD_INTEGER,  ParameterMode.IN);
    call.addParameter("mesID",    XMLType.XSD_INTEGER,  ParameterMode.IN);



    String result = (String)call.invoke(
    new Object[] {"mof","blog","1","2222","222","111","111"});
    System.out.println(result);
    } catch (ServiceException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }