webservice示例(java)

来源:互联网 发布:淘宝怎样找货源 编辑:程序博客网 时间:2024/06/17 19:15

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


有了。

最后我们新建一个测试类,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

1 0
原创粉丝点击