工作中需要调用webService服务,这里记录一下如何在java中发布和调用webService。
需要的jar包:
发布webService:
package com.xzh.webservice; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class MyWebService { public String hello(String name) { System.out.println("hello:" + name); return "hello:" + name; } @WebMethod(exclude=true) public String hello2(String name){ System.out.println("hello2:" + name); return "hello2: "+name; } public static void main(String[] args) { /** * 参数1:服务的发布地址 参数2:服务的实现者 */ Endpoint.publish("http://localhost:8080/transcode", new MyWebService()); System.out.println("webservice start success"); } }
访问webService:
package com.xzh.webservice; import java.rmi.RemoteException; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; public class MyWebClient { public static void main(String[] args) { try { // new 一个服务 Service sv = new Service(); // 创建一个call对象 Call call = (Call) sv.createCall(); // 设置要调用的接口地址 call.setTargetEndpointAddress("http://localhost:8080/transcode"); // 设置要调用的接口方法 call.setOperationName(new QName("http://webservice.xzh.com/", "hello")); // 设置参数,在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义 call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN); // 返回参数类型 call.setReturnType(XMLType.XSD_STRING); Object result = call.invoke(new Object[]{"jason"}); System.out.println(result); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
日志截图:
时间: 2024-10-09 16:39:58