这里给大家介绍一下,Java 调用 webservice 的一个实例的过程。
本项目不能运行,因为接口地址不可用。
这里只是给大家介绍一个过程,同时留作自己的笔记。如果要学习,可以参照别人的实例。比较好。
①选择项目根目录的 src ,右键,new --》 webservice client
然后输入地址:
- http: //172.18.100.52:456/hello?wsdl
必须要加 wsdl 结尾,这样才是一个 webservice 的接口。
finlish。这时候刷新项目。可以看到项目下 / src/com/tem 下面生成了客户端的代码。
客户端就可以调用了。
准备参数:
- public class PubController extends BaseMultiActionController{
- //商户编码
- private final String merchantId = "M14081916173300001";
- //ip
- private final String merchantIP = "106.38.40.86";
- //验证key
- private final String merchantKey = "d82f7b84baabf3989ad6da300ea8dad7";
- private PubManager pubManager;
- public void setPubManager(PubManager pubManager)
- {
- this.pubManager = pubManager;
- }
- private BillManager billManager;
- public void setBillManager(BillManager billManager) {
- this.billManager = billManager;
- }
- /**
- * 商户信息查询接口
- * @param request
- * @param response
- * @return
- * @throws Exception
- */
- public void getScgdUser(HttpServletRequest request, HttpServletResponse response) throws Exception {
- AppClassGeneric<QueryCustomerRsp> appClass = new AppClassGeneric<QueryCustomerRsp>();
- //参数
- //查询条件之一:卡类型
- String QueryType=ServletRequestUtils.getStringParameter(request,"QueryType");
- //查询条件之二:对应的查询号
- String QueryValue=ServletRequestUtils.getStringParameter(request,"QueryValue");
- try {
- String svcCont = "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
- "<QueryCustomerReq>"+
- "<QueryValue>"+QueryValue+"</QueryValue>"+
- "<QueryType>"+QueryType+"</QueryType>"+
- "</QueryCustomerReq>"+
- "]]>";
- ServiceRequestVo serviceRequestVo = new ServiceRequestVo("SCVC001","T001",svcCont,null);
- serviceRequestVo.setSvcCont(svcCont);
- //获取签名,传递签名
- String sign = getSign(serviceRequestVo);
- ServiceRequestVo serviceRequestVo2=pubManager.getScgdUser(serviceRequestVo,sign);
- String json=xmlStringToJson(serviceRequestVo2.getSvcCont().replace("<QueryCustomerRsp>", "").replace("</QueryCustomerRsp>",""));
- QueryCustomerRsp queryCustomerRsp= JSON.parseObject(json, QueryCustomerRsp.class);
- if (serviceRequestVo2.getResponse().getRspCode().equals("00000")) {
- appClass.setMessageStatus(MsgStatus.SUCCESS);
- appClass.setT(queryCustomerRsp);
- }else {
- appClass.setMessageStatus(MsgStatus.FAIL);
- appClass.setMessage(serviceRequestVo2.getResponse().getRspDesc());
- }
- } catch (Exception e) {
- appClass.setMessageStatus(MsgStatus.FAIL);
- appClass.setMessage(e.getMessage());
- e.printStackTrace();
- } finally {
- JSONObject json = JSONObject.fromObject(appClass);
- response.setContentType("text/html;charset=UTF-8");
- response.getWriter().print(json);
- response.getWriter().flush();
- }
- }
使用本地生成的代码调用 webservice 接口:
- public class PubManagerImpl implements PubManager{
- //生成的webservice代理类。本地Java代码。
- PubWebServicePortTypeProxy pubWebServicePortTypeProxy=new PubWebServicePortTypeProxy();
- /**
- * 用户信息查询接口
- * @throws RemoteException
- */
- @Override
- public ServiceRequestVo getScgdUser(ServiceRequestVo serviceRequestVo,String sign) throws RemoteException {
- //调用webservice 接口中的方法。
- return pubWebServicePortTypeProxy.scbss(serviceRequestVo,sign);
- }
来源: