代码改变世界

webService调用浅谈(三)

2015-10-20 13:24  D_L  阅读(12681)  评论(0编辑  收藏  举报

第三种使用java语言调用webservice方法如下:

第三种方法引用的是javax包

下面是测试代码:

 public String test() throws Exception
 {  

  //用来存放返回值串
  String result = "";
  try
  {

 //这一句的作用是定义系统的操作变量,有些程序在不添加这段代码的时候也运行正常。
   System.setProperty(org.apache.axis.client.ServiceFactory.SERVICEFACTORY_PROPERTY,"org.apache.axis.client.ServiceFactory" );

  //定义访问变量,参数一位webservice的访问地址,参数二位webservice使用的命名空间
   QName servicename = new QName(webServiceURL,namespace);

  //定义操作变量,操作变量中传入的参数为前面已经定义的访问变量
   javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(servicename);

  //实例化调用变量
   javax.xml.rpc.Call call = service.createCall();

  //添加调用地址
   call.setTargetEndpointAddress(webServiceURL);

  //添加调用的函数的命名空间以及函数名称
   QName operationname = new QName(namespace, operationName);

  //设置调用操作

   call.setOperationName(operationname);

 //定义传入的参数,参数1是入参名大小写敏感,参数2为参数类型(字符/数字……),参数3为参数类型(入参/出参)
   call.addParameter("para1",XMLType.XSD_STRING,ParameterMode.IN );

 //第二个参数的定义同上
   call.addParameter("para2",XMLType.XSD_STRING,ParameterMode.IN );

  //定义返回值的格式,第一个参数为命名空间,第二个参数为返回值类型,这里需要注意的是返回值的类型是webservice开发商提供,我们需要与其保持一致
   QName returnname = new QName(namespace, "string");
   call.setReturnType(returnname, String.class);

  //进行调用传入对应入参的值,并且将返回的对象转换为字符串。
   result = call.invoke(new Object[]{para1,para2}).toString();

  //异常处理
   if(result==null)
   {
    result = "";
   }   
  }
  catch (ServiceException e)
  {
   e.printStackTrace();
  }  
  catch (RemoteException e)
  {
   e.printStackTrace();
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  return result; 
 }

下面是第一种和第二种调用方式的传送门,感兴趣的朋友可以也去看看。

http://www.cnblogs.com/Sabasdian/p/JavaAndWebservice_1.html

http://www.cnblogs.com/Sabasdian/p/JavaAndWebservice_2.html