需要导入四个ja包
axis.jar、commons-discovery-0.2.jar、jaxrpc.jar、wsdl4j-1.6.2.jar
然后调用下面的方法:
* 调用Webservice接口
*
* @param url
* 请求服务的URL
* @param operationName
* 调用方法名
* @param parameterName
* 参数类型
* @param parameterValue
* 方法参数
* @return 返回结果
* @throws ServiceException
* @throws MalformedURLException
* @throws RemoteException
*/
public static String getWebservice(String url, String operationName,String parameterName, String parameterValue) {
String ret = "";
try {
// 创建service对象,通过axis自带的类创建
Service s = new Service();
// 创建服务方法的调用者对象call,设置call对象的属性
Call call = (Call) s.createCall();
call.setTargetEndpointAddress(new URL(url));// 给call对象设置请求的URL属性
call.setOperationName(operationName);// 给call对象设置调用方法名属性
call.addParameter(parameterName, XMLType.XSD_STRING, ParameterMode.IN);// 给call对象设置方法的参数名、参数类型、参数模式
call.setReturnType(XMLType.SOAP_STRING);// 设置调用方法的返回值类型
// 通过invoke方法调用webservice
ret = (String) call.invoke(new Object[] { parameterValue });// 调用服务方法
} catch (Exception e) {
e.printStackTrace();return null;
}
return ret;
}
调用实例: getWebservice("url", "method","json", "{'name:'name','pwd':'123123'}");
曾经在调用这个方法的时候一直报错,说new Service()时,Service类找不到,当时项目是在Spring下,在方法中写一个Main方法是能调用的,能取到测试值,但是当tomcat跑起来的时候,从浏览器url调用到该方法是就报错了;找了很久的原因,有人说是Service和spring注解什么冲突,还有就是jar包不对,最后和同事一起找到了原因:是Eclipse软件的原因,
查了下原因’Gradle从中央库下载的jar文件在系统的其它目录,使用gradle eclipse添加Eclipse支持时,jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。
可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build Path Entries”,添加所有依赖的jar包,就可以在发布时自动发布外部依赖的jar包。‘
我当时把软件换成MyEclipse也好了