对接泛微的OA系统同步Employee和Department,好长时间没写WebService接口,留个记录
接口地址进去页面有反应,后边拼接上?wsdl,出现xml例子就能用了
然后打开Eclipse新建一个web service client,把拼接有?wsdl的地址复制进去,然后选择生成文件的路径
生成之后,新建一个类测试一下;`
@RequestMapping(value="/testEmp.html")
public String testEmp(HttpServletRequest request,HttpServletResponse response, Model model) throws IOException{
GetBasicInfoSoapProxy getBasicInfoSoapProxy = new
GetBasicInfoSoapProxy("http://123:2001/ws/getbasicinfo.asmx?wsdl");
String hrEmpInfoAll = getBasicInfoSoapProxy.getGetBasicInfoSoap().getHrEmpInfoAll();
System.out.println(hrEmpInfoAll);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();// 1.建立DOM工厂
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();// 2.获得DOM解析器
Document document = builder.parse(new InputSource(new ByteArrayInputStream(hrEmpInfoAll.getBytes("UTF-8"))));// 3.指定解析的文件路径,将XML文件在解析成DOM树
NodeList Name = document.getElementsByTagName("Name");// 根据标签名获取获取所有该标签名的节点
NodeList Sex = document.getElementsByTagName("Sex");// 根据标签名获取获取所有该标签名的节点
NodeList EmpCode = document.getElementsByTagName("EmpCode");// 根据标签名获取获取所有该标签名的节点
NodeList A011260 = document.getElementsByTagName("A011260");// 根据标签名获取获取所有该标签名的节点
NodeList A01130 = document.getElementsByTagName("A01130");// 根据标签名获取获取所有该标签名的节点
NodeList dCode = document.getElementsByTagName("b01_dept_code");
int length = Name.getLength();
EmployeeBase emp = new EmployeeBase();
HrAccount hrAccount = new HrAccount();
Calendar instance = Calendar.getInstance();
for (int i = 1; i < length; i++) {
emp.setUname(Name.item(i).getFirstChild().getTextContent());
emp.setUcode(EmpCode.item(i).getFirstChild().getTextContent());
emp.setSex(Long.valueOf(Sex.item(i).getFirstChild().getTextContent()));
//emp.setMobilePhone(Phone.item(i).getFirstChild().getTextContent());
if(A011260.item(i).getFirstChild().getTextContent().equals("1")){
emp.setIsDelete(false);
}else{
emp.setIsDelete(true);
}
emp.setDcode(dCode.item(i).getFirstChild().getTextContent());
emp.setBirthday(instance);
emp.setJoinCmaDate(instance);
emp.setJoinJobDate(instance);
emp.setAnnualLeave(0.00);
emp.setPolity("政治面貌");
baseInfoService.add(emp);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(hrEmpInfoAll);
return hrEmpInfoAll;
}`
简单的接口调用完成了,但是当时测试时因为不在一个网络,测试时用的外网泛微的wsdl地址是一个域名,应该是没有注册,我所在的网络把这个域名屏蔽了,结果访问不通。后来把项目放到线上就可以正常使用了