加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice示例(java)

发布时间:2020-12-16 22:39:54 所属栏目:安全 来源:网络整理
导读:?最近要做一个微信消息发送功能,考虑到微信平台(A)项目的安全性,禁止非微信浏览器访问。打算在另外一个项目中建立该平台(B:该项目部署于公司内网中)实现该功能。注:A、B两个项目都是非webservice项目。考虑使用webservice来实现。以下是功能测试全过

?最近要做一个微信消息发送功能,考虑到微信平台(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读