[实例]JAVA调用微信接口发送图文消息,不用跳到详情页

package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.junit.Test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class WechatServlet {    //获取微信返回的access_token
    private String getAccess_token() {
        String access_token=null;
        StringBuffer action =new StringBuffer();
        action.append("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential")
        .append("&appid=***************") //设置服务号的appid
        .append("&secret=*********************************"); //设置服务号的密匙
        URL url;
        try {       //模拟get请求
            url = new URL(action.toString());
            HttpURLConnection http = (HttpURLConnection) url.openConnection();
            http.setRequestMethod("GET");
            http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            http.setDoInput(true);
            InputStream is =http.getInputStream();
            int size =is.available();
            byte[] buf=new byte[size];
            is.read(buf);
            String resp =new String(buf,"UTF-8");
            JSONObject json = JSONObject.fromObject(resp);
            Object object =json.get("access_token");
            if(object !=null){
                  access_token =String.valueOf(object);
            }
            System.out.println("getAccess_token:"+access_token);
            return access_token;
        } catch (MalformedURLException e) {
            e.printStackTrace();
             return access_token;

        } catch (IOException e) {
            e.printStackTrace();
             return access_token;

        }
    }
    //获取该服务号下的用户组
    public JSONArray getOpenids(){
        JSONArray array =null;
        String urlstr ="https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID";
        urlstr =urlstr.replace("ACCESS_TOKEN", getAccess_token());
        urlstr =urlstr.replace("NEXT_OPENID", "");
        URL url;
        try {
            url = new URL(urlstr);
            HttpURLConnection http = (HttpURLConnection) url.openConnection();
            http.setRequestMethod("GET");
            http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            http.setDoInput(true);
            InputStream is =http.getInputStream();
            int size =is.available();
            byte[] buf=new byte[size];
            is.read(buf);
            String resp =new String(buf,"UTF-8");
            JSONObject jsonObject =JSONObject.fromObject(resp);
            System.out.println("getOpenids:"+jsonObject.toString());
            array =jsonObject.getJSONObject("data").getJSONArray("openid");
            return array;
        } catch (MalformedURLException e) {
            e.printStackTrace();
             return array;

        } catch (IOException e) {
            e.printStackTrace();
             return array;
        }
    }
    //根据用户组的openId获取用户详细数据
    public JSONObject getUserOpenids(String openId){
        String urlstr ="https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
        urlstr =urlstr.replace("ACCESS_TOKEN", getAccess_token());
        urlstr =urlstr.replace("OPENID", openId);
        urlstr =urlstr.replace("NEXT_OPENID", "");
        URL url;
        try {
            url = new URL(urlstr);
            HttpURLConnection http = (HttpURLConnection) url.openConnection();
            http.setRequestMethod("GET");
            http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            http.setDoInput(true);
            InputStream is =http.getInputStream();
            int size =is.available();
            byte[] buf=new byte[size];
            is.read(buf);
            String resp =new String(buf,"UTF-8");
            JSONObject jsonObject =JSONObject.fromObject(resp);
            System.out.println("getUserOpenids:"+jsonObject.toString());
            return jsonObject;
        } catch (MalformedURLException e) {
            e.printStackTrace();
             return null;

        } catch (IOException e) {
            e.printStackTrace();
             return null;
        }
    }
    //主方法,只有服务号才能使用客服图文消息,实现点击图文链接,直接跳转到指定URL
    @Test
    public void testsendTextByOpenids(){
        //String urlstr ="https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN"; //群发图文消息
        String urlstr ="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN"; //发送客服图文消息
        urlstr =urlstr.replace("ACCESS_TOKEN", getAccess_token());
        String reqjson =createGroupText(getOpenids());
        try {
            URL httpclient =new URL(urlstr);
            HttpURLConnection conn =(HttpURLConnection) httpclient.openConnection();
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(2000);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.connect();
            OutputStream os= conn.getOutputStream();
            System.out.println("ccccc:"+reqjson);
            os.write(reqjson.getBytes("UTF-8"));//传入参数
            os.flush();
            os.close();

            InputStream is =conn.getInputStream();
            int size =is.available();
            byte[] jsonBytes =new byte[size];
            is.read(jsonBytes);
            String message=new String(jsonBytes,"UTF-8");
            System.out.println("testsendTextByOpenids:"+message);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //创建发送的数据
    private String createGroupText(JSONArray array){
         JSONObject gjson =new JSONObject();
         //JSONObject json = getUserOpenids(array.get(3).toString()); //array参数是用户组所有的用户,该方法打印array其中一个用户的详细信息
         gjson.put("touser", array.get(3));
         gjson.put("msgtype", "news");
         JSONObject news =new JSONObject();
         JSONArray articles =new JSONArray();
         JSONObject list =new JSONObject();
         list.put("title","title"); //标题
         list.put("description","description"); //描述
         list.put("url","http://"); //点击图文链接跳转的地址
         list.put("picurl","http://"); //图文链接的图片
         articles.add(list);
         news.put("articles", articles);
         JSONObject text =new JSONObject();
         gjson.put("text", text);
         gjson.put("news", news);

        return gjson.toString();
    }
}
时间: 2024-10-06 13:59:57

[实例]JAVA调用微信接口发送图文消息,不用跳到详情页的相关文章

zabbix通过微信企业号发送图文消息

我有篇博客写到如何用微信发送告警消息,实现了发送文字消息,不能带图片,这样不是很直观,最近又研究了一下如何发送图片,写了脚本实现了发送文字+图片的告警. 效果如下: 先发送文字消息,下面挨着graph. 这里只提供脚本和思路,具体配置请看我的另一篇博客:(http://wuhf2015.blog.51cto.com/8213008/1688614#662543) 实现方式: 在Action中设置Default Subject的格式为"状态:#{TRIGGER.STATUS}#主机:#{HOST.

微信接口-发送模板消息

// 发送模板消息function send_template_message($data,$appId,$appSecret){ $access_token = get_access_token($appId,$appSecret); $url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$access_token; $ch = curl_init(); curl_setopt($ch, C

C# 调用微信接口上传素材和发送图文消息

using Common;using Newtonsoft.Json.Linq;using System;using System.IO;using System.Net;using System.Text; /// <summary> /// 调用微信接口凭证access_token /// </summary> private static string test_access_token { get { return "XXXXXXXXXXXX"; } }

java调用微信公众平台接口

微信公众平台 这两天在网上看了其他的方法,也调试了一些,然后自己整理了一下,方便自己学习,也方便大家使用. 调用接口 1.java调用上传图片接口 public final static String IMAGE = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN"; public static String uploadimg(MultipartFile file ) { Clo

java调用飞信接口免费短信发送到对方手机

原文:java调用飞信接口免费短信发送到对方手机 源代码下载地址:http://www.zuidaima.com/share/1550463460084736.htm 飞信发送信息限(移动用户) 1.用飞信加为好友才可以跟对方发飞信(达到此条件发飞信不收取费用) 2.FetionConfig配置文件里的 WeekendGreetings=是发送另一个配置文件名 如 WeekendGreetings=周末问候 就是 周末问候 文件里的内容 每一行 就是一条飞信 phone=你的手机号码 pwd=你

C#开发微信.NET平台MVC微信开发 发送普通消息Demo以及收不到消息的问题

不得不说现在微信非常火,微信开放平台可以自己写程序跟用户交互,节省了前台开发成本,免去用户装客户端的烦恼.于是今天兴致来潮,想做一个试试. 首先找到了开发者文档,看了看,蛮简单的.(公众号早已申请,有兴趣可以关注看看:zyjsoft) 第一步(提供接口,供微信调用,由于是HTTP请求,于是我用MVC模式做了一个简单的接口): //认证接口 public ActionResult WeiXin(string signature, string timestamp, string nonce, st

微信公众平台图文消息条数限制在1条以内

从2018年10月12日起,微信公众平台图文消息被限制为1条. 受影响的有 客服接口发送的图文消息,如 { "touser":"OPENID", "msgtype":"news", "news":{ "articles": [ { "title":"Happy Day", "description":"Is Reall

Python实现通过微信企业号发送文本消息的Class

前文<Python实现获取微信企业号access_token的Class>提供了获取微信企业号的access_token,本文中的代码做实际发送文本消息. 编程要点和调用方法: 支持发送中文,核心语句"payload = json.dumps(self.data, encoding='utf-8', ensure_ascii=False)",关键字"python json 中文" 这个Class只有一个公共方法send(). 使用方法:import这个c

zabbix调用telegram机器人发送报警消息

众所周知,telegram的机器人还是非常好用,而且是免费的,所以这就给监控系统发送报警消息提供了一个非常好的渠道,相信很多朋友已经垂涎三尺了,所以废话不多说,直奔主题吧!br/>?zabbix系统基础配置部分此处就直接跳过了,如果需求请参阅http://blog.51cto.com/183530300/category8.html?此处我们直接从创建机器人开始,当然创建机器人的前提是你要先有一个telegram账号,接下来是在telegram客户端上的操作了第一步:在搜索栏里直接使用@BotF