最近要做一个微信消息发送功能,考虑到微信平台(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:\\workspace\\zzylr\\src -p com.taikang.test -keep http://10.33.2.110:8080/weixinYxfz/KefuUtil 按下回车,查看结果:
报错了,对是错了。看来需要指定wsdl
再输入:wsimport -sE:\\workspace\\zzylr\\src -p com.taikang.test -keep http://10.33.2.110:8080/weixinYxfz/KefuUtil?wsdl 按下回车,结果如下:
成功了。刷新下B项目com.taikang.test,看看是否已经生产对应的webservice文件:
@H_392_502@
有了。
最后我们新建一个测试类,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。