webservice示例(java)
?最近要做一个微信消息发送功能,考虑到微信平台(A)项目的安全性,禁止非微信浏览器访问。打算在另外一个项目中建立该平台(B:该项目部署于公司内网中)实现该功能。注:A、B两个项目都是非webservice项目。考虑使用webservice来实现。以下是功能测试全过程记录: ? 首先在A项目中新建一个服务类KefuUtil.java,记得添加@WebService。代码清单如下: /** ?* 客服消息管理类 ?* @author luolj07 ?* @date 2015-08-24 ?* ?* ?*/ @WebService public class KefuUtil { /** ??? ?* 客服消息接口测试 ??? ?* @param type ??? ?* @return ??? ?* @throws Exception ??? ?*/ ??? public boolean gotoKefu(String type) throws Exception{ ?????? ?????? String appId = OpString.APP_ID; ??? ??? String appSecret = OpString.APP_SECRET; ??? ??? ??? CommonBo bs = new CommonBo(); ??? ??? bs.setS1("xxxxx"); ??? ??? bs.setS5("xxx"); ??? ??? bs.setS4("news"); ?????? ??? AccessTokenaccessToken = WeixinUtil.getAccessToken(appId,appSecret); ?????? ?????? ??? boolean result =false; ?????? ??? if(accessToken !=null){ ?????????? ??? result =KefuUtil.runKefu(accessToken.getToken(),KefuUtil.getMessages(bs)); ?????????? ?????????? ??? //判断是否调用客服消息成功,若不成功,则重新获取access_token再次获取。??? ?????????? ??? if(result ==false){ ????????????? ??? accessToken =WeixinUtil.getAccessToken(appId,appSecret); ????????????? ??? result =KefuUtil.runKefu(accessToken.getToken(),KefuUtil.getMessages(bs)); ?????????? ??? } ?????? ??? } ?????? ??? ?????? return result; } } ? 监听服务类:KefuMessageListener.java 该服务来实现ServletContextListener接口,用于应用服务器监听。代码清单如下: package com.gxtk.weixin.listener; ? import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.xml.ws.Endpoint; ? import com.gxtk.weixin.utils.KefuUtil; ? /** ?* 启动webserver服务监听类,使之随tomcat启动而启动服务 ?* @author luolj07 ?* ?*/ public class KefuMessageListener implements ServletContextListener { ? ??? @Override ??? public void contextDestroyed(ServletContextEvent arg0) { ?????? // TODO Auto-generatedmethod stub ?????? ??? } ? ??? @Override ??? public void contextInitialized(ServletContextEvent arg0) { ?????? ?????? Endpoint.publish("http://10.33.2.110:8080/weixinYxfz/KefuUtil",new KefuUtil()); ?????? System.out.println("=============启动webservice服务================Publish Success"); ?????? ??? } } ? 然后项目web.xml中配置监听,加入如下配置: <listener> ??? <listener-class>com.gxtk.weixin.listener.KefuMessageListener</listener-class> ? </listener> ? 然后启动项目,可看到启动信息如下: 说明我们的监听器已经启动,服务正常启动。 ? A项目webservice服务已经处理完毕。接下来看看B项目的实现过程。 ? 首先新建一个test空的package,然后运行-cmd,输入以下命令: 命令格式:wsimport?-s?src的路径?-p?完整包名?-keep?webservice的发布地址?然后回车就OK了, 输入命令:wsimport -sE:workspacezzylrsrc -p com.taikang.test -keep http://10.33.2.110:8080/weixinYxfz/KefuUtil ?按下回车,查看结果: 报错了,对是错了。看来需要指定wsdl 再输入:wsimport -sE:workspacezzylrsrc -p com.taikang.test -keep http://10.33.2.110:8080/weixinYxfz/KefuUtil?wsdl 按下回车,结果如下: 成功了。刷新下B项目com.taikang.test,看看是否已经生产对应的webservice文件: 有了。 最后我们新建一个测试类,test.java做测试,代码清单如下: packagecom.taikang.test; ? public class Test { ?????? public static void main(String[] args) { ????????????? KefuUtil util = new KefuUtilService().getKefuUtilPort(); ????????????? try{ ???????????????????? util.gotoKefu("测试接口发送消息"); ???????????????????? System.out.println("发送成功"); ????????????? } catch(Exception_Exception e) { ???????????????????? System.out.println("发送失败"); ???????????????????? e.printStackTrace(); ????????????? } ?????? } } 结果测试如下: B项目输出信息: ? A项目输出信息: ? 成功调用信息发送。 ? 再打开微信看看: 成功接收消息。 搞定。。。。 参考:http://blog.csdn.net/lovingshu/article/details/8004840 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |