JAVA微信开发:[20]如何实现主动发送微信消息

转载 2015年07月08日 15:58:32

在微信开发中,利用微信的接口主动给微信关注用户发送消息。这个主要是利用微信的客服接口来实现该功能,具体的实现如下:

    /**

     * 微信公共账号发送给账号

     * @param content 文本内容

     * @param toUser 微信用户  

     * @return

     */

    public  void sendTextMessageToUser(String content,String toUser){

       String json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"text\", \"text\": {\"content\": \""+content+"\"}}";

       //获取access_token

       GetExistAccessToken getExistAccessToken = GetExistAccessToken.getInstance();

       String accessToken = getExistAccessToken.getExistAccessToken();

       //获取请求路径

       String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+accessToken;

       System.out.println("json:"+json);

       try {

           connectWeiXinInterface(action,json);

       } catch (Exception e) {

           e.printStackTrace();

       }

   }

    /**

     * 微信公共账号发送给账号(本方法限制使用的消息类型是语音或者图片)

     * @param mediaId 图片或者语音内容

     * @param toUser 微信用户  

     * @param messageType 消息类型

     * @return

     */

    public  void sendPicOrVoiceMessageToUser(String mediaId,String toUser,String msgType){

        String json=null;

        if(msgType.equals(REQ_MESSAGE_TYPE_IMAGE)){

             json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"image\", \"image\": {\"media_id\": \""+mediaId+"\"}}";

        }else if(msgType.equals(REQ_MESSAGE_TYPE_VOICE)){

            json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"voice\", \"voice\": {\"media_id\": \""+mediaId+"\"}}";

        }

        //获取access_token

       GetExistAccessToken getExistAccessToken = GetExistAccessToken.getInstance();

       String accessToken = getExistAccessToken.getExistAccessToken();

       //获取请求路径

       String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+accessToken;

       try {

           connectWeiXinInterface(action,json);

       } catch (Exception e) {

           e.printStackTrace();

       }

   }

    /**

     *  发送图文给所有的用户

     * @param openId 用户的id

     */

    public  void sendNewsToUser(String openId){

        MediaUtil mediaUtil = MediaUtil.getInstance();

        ArrayList<Object> articles = new ArrayList<Object>();

       Article a = new Article();

       articles.add(a);

       String str = JsonUtil.getJsonStrFromList(articles);

        String json = "{\"touser\":\""+openId+"\",\"msgtype\":\"news\",\"news\":" +

                "{\"articles\":" +str +"}"+"}";

        json = json.replace("picUrl", "picurl");

        System.out.println(json);

        //获取access_token

       String access_token = mediaUtil.getAccess_token();

       //获取请求路径

       String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+access_token;

       try {

           connectWeiXinInterface(action,json);

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

    /**

     * 连接请求微信后台接口

     * @param action 接口url

     * @param json  请求接口传送的json字符串

     */

    public  void connectWeiXinInterface(String action,String json){

        URL url;

       try {

           url = new URL(action);

           HttpURLConnection http = (HttpURLConnection) url.openConnection();

           http.setRequestMethod("POST");

           http.setRequestProperty("Content-Type",

                   "application/x-www-form-urlencoded");

           http.setDoOutput(true);

           http.setDoInput(true);

           System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒

           System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒

           http.connect();

           OutputStream os = http.getOutputStream();

           os.write(json.getBytes("UTF-8"));// 传入参数

           InputStream is = http.getInputStream();

           int size = is.available();

           byte[] jsonBytes = new byte[size];

           is.read(jsonBytes);

           String result = new String(jsonBytes, "UTF-8");

           System.out.println("请求返回结果:"+result);

           os.flush();

           os.close();

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

转载地址:http://jingyan.baidu.com/article/b907e627b1e4bb46e7891cf0.html

欢迎访问我的技术群425783133



手把手教您开发JAVA微信SDK-发送消息

大家好,今天我给大家带来的是微信开发之发送消息。 用户关注微信号,那么肯定是为了得到某种功能,假如用户发送文本信息“电话”,我们能给用户发送我的联系电话,这样是不是很友好呢? 好,昨天我们已经接受到了...
  • yakson
  • yakson
  • 2014年03月25日 14:07
  • 17578

java实现微信图文消息的发送

上面已经实现了消息的接收和发送,下面开始整个图文消息。这个才是大头吧,毕竟公众号还是得靠点图才能留住观众。hey~左边的观众。hey~右边的观众。可惜菜鸟的博文没有观众。还是给大家贴下柳峰老师的博文吧...

照片EXIF信息的读取和改写的JAVA实现

由于项目需要对照片的EXIF信息进行处理,因此在网上搜索了一番。捣鼓出来了,写下,总结。需要用到2个jar包,metadata-extractor-2.3.1和mediautil-1.0。这2个jar...
  • jsnjlc
  • jsnjlc
  • 2008年08月28日 15:27
  • 6627

微信模板信息发送给用户(JAVA)

模板信息
  • ZW_KK
  • ZW_KK
  • 2016年01月25日 13:58
  • 9074

微信公众平台开发教程Java版(3) 消息接收和发送

前面两章已经介绍了如何接入微信公众平台,这一章说说消息的接收和发送 可以先了解公众平台的消息api接口(接收消息,发送消息) http://mp.weixin.qq.com/wiki/index....

java微信发送图文和文字消息

1、获取token         public static Map getAccessToken(WxConstant wxConstant) { // 第二步获取有效的access_toke...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

java微信开发发送消息

WeinxinCtroller.java package com.caiyl.zmd.weixin; import java.io.BufferedReader; import java.io.I...

Spring+监听器+Quartz集群(2)——quartz2.2.1创建表结构

-- -- A hint submitted by a user: Oracle DB MUST be created as "shared" and the -- job_queue_proces...
  • jrn1012
  • jrn1012
  • 2015年05月08日 18:40
  • 4066

quartz的使用(一)

1.   pom.xml org.quartz-scheduler quartz 1.8.2 2.  quartz.prop...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA微信开发:[20]如何实现主动发送微信消息
举报原因:
原因补充:

(最多只允许输入30个字)