利用axis的命令生成代码的网上一大片
但是有些人 就是觉得配置太麻烦了 懒得去配置 直接用代码生成代码多方便
利用axis1.4去生成 下载axis1.4 解压搜索所有的jar 在eclipse建一个java工程 jar加入构建目录
新建类
import org.apache.axis.wsdl.WSDL2Java;
public class TestGen {
public static void main(String[] args) {
WSDL2Java.main(new String[] { "-p",
"cn.net.tc.yjj.core.datajjyj",
"http://192.168.3.52:88/InfoUploadService.asmx?wsdl"
});
}
}
会在当前工程下新建一个cn.net.tc.yjj.core.datajjyj 目录 下面就是生成的代码
利用axis2去生成 下载axis2 解压搜索所有的jar 在eclipse建一个java工程 jar加入构建目录
新建类
import org.apache.axis2.wsdl.WSDL2Java;
public class TestGen {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
WSDL2Java.main(new String[] {"-uri","http://192.168.3.52:88/InfoUploadService.asmx?wsdl", "-p",
"cn.net.tc.yjj.core.datajjyj1",
});
}
}
实际上 代码上运行也是相当于 在命令行运行 没有命令那么麻烦 配置的东西多 又容易报错
在命令行运行 axis2 就是 java WSDL2Java -uri http://192.168.3.52:88/InfoUploadService.asmx?wsdl -p cn.net.tc.yjj.core.datajjyj1
java命令实际就是调用的 WSDL2Java的主方法 其他的都是参数
运行即可
1.4是http1.0的才能生成 http1.1必须使用axis2生成
axis生成后就两个类 其中stub那个类 才是运行的类
axis2调用类似如下:
SyncDataDao d = new SyncDataDaoImpl();
InfoUploadServiceStub stub=new InfoUploadServiceStub();
//登录获取token
AuthenticateUser user=new AuthenticateUser();
SecuredWebServiceHeaderE dd=new SecuredWebServiceHeaderE();
dd.setSecuredWebServiceHeader(new SecuredWebServiceHeader());
dd.getSecuredWebServiceHeader().setUsername(PropertiesUtil.getPropertyEntity().getData_userid());
dd.getSecuredWebServiceHeader().setPassword(PropertiesUtil.getPropertyEntity().getData_password());
AuthenticateUserResponse response=stub.authenticateUser(user, dd);
String token=response.getAuthenticateUserResult();
System.out.println(token);
//获取品种信息
GetCommodities gg=new GetCommodities();
dd.getSecuredWebServiceHeader().setAuthenticatedToken(token);
GetCommoditiesResponse res=stub.getCommodities(gg, dd);
ArrayOfCommodity array= res.getGetCommoditiesResult();
Commodity[] cd=array.getCommodity();
//插入品种数据到数据库
d.insertCommodityToDb(cd);
for(Commodity cc:cd){
System.out.println("获取品种信息_"+cc.getCommodityID()+"-"+cc.getTradeName());
}
//获取企业信息
GetAllMembers m=new GetAllMembers();
GetAllMembersResponse members= stub.getAllMembers(m, dd);
Members[] mem=members.getGetAllMembersResult().getMembers();
for(Members cc:mem){
System.out.println("获取企业信息_"+cc.getMemberID()+"-"+cc.getName());
}
//插入企业数据到数据库
d.insertPublicMemberToDb(mem);
GetComMember commem=new GetComMember();
//获取企业品种经营关系
GetComMemberResponse comRes=stub.getComMember(commem, dd);
ComMember[] cm=comRes.getGetComMemberResult().getComMember();
d.inserComMemberToDb(cm);
for(ComMember cc:cm){
System.out.println("获取企业品种经营关系_"+cc.getMemberID()+"-"+cc.getCommodityID());
}
//获取用户母印信息
GetUser gUser=new GetUser();
GetUserResponse userRes=stub.getUser(gUser, dd);
User[] us=userRes.getGetUserResult().getUser();
d.inserEntCertToDb(us);
for(User cc:us){
System.out.println("获取用户母印信息_"+cc.getMemberID()+"-"+cc.getKeyString1());
}
axis会生成很多个文件 其中 PortType文件就是接口文件
使用locator类去获取这个接口的实例
IntentSendProductLocator l = new IntentSendProductLocator();
IntentSendProductSoap_PortType ps = l
.getIntentSendProductSoap();
然后就可以调用方法了