Axis 访问webservice客户端
- 引入jar包,要把下面的包放在lib下不然会报错
- 访问代码
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
Service service = new Service();
Call call;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress("http://localhost:8080/px/webservice/applyService?wsdl");
call.setOperationName(new QName("http://service.train.px.com/","applyUserList"));
call.setUseSOAPAction(true);
//这下面两行一定要加上,否则接收在服务器端收不到。
call.addParameter("xmlStr", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
Object[] c=new Object[]{xmlStr};
String result = (String) call.invoke(c);
System.out.println(result);
//将返回的字符串转换成list集合
//JSONArray array = JSONArray.fromObject(result);
//List<Album> list = JSONArray.toList(array,Album.class);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
call.setTargetEndpointAddress添加的时wsdl访问地址QName两个参数分别为wsdl:import namespace,如果namespace和targetNamespace不一致导致报错可以在webservice接口上添加targetNamespace与namespace一致, 如果String result = (String) call.invoke(c); 报参数不一致的错误,在webservice的接口上添加@WebParam
贴出service接口代码
package com.px.train.service;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
* @description:培训上岗申请
* @author:weiwei
* @date:2018/8/6 16:14
*/
@WebService
public interface ApplyPostService {
/**
* 培训结束用户列表
*/
@WebMethod
public String applyUserList(@WebParam(name="uri") String xml,@WebParam(name="xmlStr") String xmlStr);
}
package com.px.train.service.impl;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.px.train.model.TrainClassStudent;
import com.px.train.service.ApplyPostService;
import com.px.train.service.TrainClassService;
@WebService(endpointInterface="com.px.train.service.ApplyPostService",serviceName="applyService",targetNamespace = "http://service.train.px.com/")
public class ApplyPostServiceImpl implements ApplyPostService {
private static Logger LOGGER = LoggerFactory.getLogger(ApplyPostServiceImpl.class);
@Autowired
private TrainClassService trainClassService;
@WebMethod(operationName= "applyUserList")
public String applyUserList(@WebParam(name="uri") String xml,@WebParam(name="xmlStr") String xmlStr) {
// TODO Auto-generated method stub
List<TrainClassStudent> userList=trainClassService.getSudentList();
/*List<TrainClassStudent> userList=new ArrayList<TrainClassStudent>();
for (int i=0;i<4;i++){
TrainClassStudent po=new TrainClassStudent();
po.setUserId(i+1+"Id");po.setName("name"+i);
po.setJobNumber("jobNumber"+i);po.setOrgId("orgId"+i);
po.setSex(i%2);po.setStuTel("stuTel"+i+""+i);
po.setEmail("email"+i);po.setCertificateId("certificateId"+i);
po.setRealEndDate(new Date());
userList.add(po);
}*/
String xmlStr2=getUsersXml(userList);
System.out.println(xmlStr2);
return xmlStr2;
}
@WebMethod(exclude= true)
public String getUsersXml(List<TrainClassStudent> userList) {
// TODO Auto-generated method stub
Document document = DocumentHelper.createDocument();
//添加以根节点
Element root = document.addElement("userList");
for (TrainClassStudent user : userList) {
Element area = root.addElement("user");
area.addElement("id").setText(StringUtils.isEmpty(user.getUserId())?"":user.getUserId());
area.addElement("name").setText(StringUtils.isEmpty(user.getName())?"":user.getName());
area.addElement("code").setText(StringUtils.isEmpty(user.getJobNumber())?"":user.getJobNumber());
area.addElement("orgId").setText(StringUtils.isEmpty(user.getOrgId())?"":user.getOrgId());
area.addElement("sex").setText(user.getSex()==null?"":user.getSex().toString());
area.addElement("phone").setText(StringUtils.isEmpty(user.getStuTel())?"":user.getStuTel());
area.addElement("email").setText(StringUtils.isEmpty(user.getEmail())?"":user.getEmail());
area.addElement("certiCode ").setText(StringUtils.isEmpty(user.getCertificateId())?"":user.getCertificateId());
area.addElement("ifTrain ").setText("true");
area.addElement("trainTime ").setText(user.getRealEndDate()==null?"":user.getRealEndDate().toString());
}
return document.asXML();
}
}