webService调用浅谈(三)
2015-10-20 13:24 D_L 阅读(12716) 评论(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;
}
下面是第一种和第二种调用方式的传送门,感兴趣的朋友可以也去看看。