一.代理调用
可以直接调用,但是返回数据比较难提取,建议使用本地代理
1.进入wsdl文件http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
2.cmd destop: wsimport -s ./ -p com.kinth.wsimport http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL 生成webservice本地代理 (可以理解为下载了远程的service)
3.导入工程中,创建服务,获取访问方式,获取方法
二.对外发布
1.编写好业务方法
2.Main中发布(地址,供人调用业务类)
3.对业务类注解为@WebService
@WebService
public class PhoneService {
public static void main(String[] args) {
String address1="http://192.168.0.124:8888/ws/phoneService";
String address2="http://192.168.0.124:8888/ws/phoneManager";
Endpoint.publish(address1, new PhoneService());
Endpoint.publish(address2, new PhoneService());
System.out.println(address1+"?WSDL");
}
public Phone getPhoneInfo(String osName){
Phone phone=new Phone();
if(osName.endsWith("android")){
phone.setName("android");phone.setOwner("google");phone.setTotal(80);
}else if(osName.endsWith("ios")){
phone.setName("ios");phone.setOwner("apple");phone.setTotal(15);
}else{
phone.setName("windows phone");phone.setOwner("microsoft");phone.setTotal(5);
}
return phone;
}
}
4.wsimport下来,导入工程,创建服务获取访问方式,方法传参,输出业务处理后的信息
public class Test {
public static void main(String[] args) {
//服务
PhoneServiceService ws=new PhoneServiceService();
//访问方式
PhoneService phoneServicePort = ws.getPhoneServicePort();
Phone phoneInfo = phoneServicePort.getPhoneInfo("android");
System.out.println(phoneInfo.getName());
System.out.println(phoneInfo.getOwner());
System.out.println(phoneInfo.getTotal());
}
}
三.WSDL文件
从下往上看,通过bindingName一直逆推。
服务/访问方式/方法/参数
四.修改发布风格
1.修改服务名,命名空间
@WebService (serviceName="PhoneManager",//修改服务名
targetNamespace="http://www.jikexueyuan.com") //修改命名空间 ,默认包名,取反
2.修改服务名:
方法上方:@WebMethod(operationName="getInfo")
3.修改返回参数名,输入参数名
public @WebResult(name="phone") Phone getPhoneInfo(@WebParam(name="UserName")String Name)
4.排除某些public方法发布,方法上方
@WebMethod(exclude=true)