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

packagecom.test;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.URL;importorg.junit.Test;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;public classWechatServlet {

//获取微信返回的access_tokenprivateString getAccess_token() {

String access_token=null;

StringBuffer action=newStringBuffer();

action.append("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential")

.append("&appid=***************") //设置服务号的appid

.append("&secret=*********************************"); //设置服务号的密匙

URL url;try{

//模拟get请求

url= newURL(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);returnaccess_token;

}catch(MalformedURLException e) {

e.printStackTrace();returnaccess_token;

}catch(IOException e) {

e.printStackTrace();returnaccess_token;

}

}

//获取该服务号下的用户组publicJSONArray 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= newURL(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");returnarray;

}catch(MalformedURLException e) {

e.printStackTrace();returnarray;

}catch(IOException e) {

e.printStackTrace();returnarray;

}

}

//根据用户组的openId获取用户详细数据publicJSONObject 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= newURL(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());returnjsonObject;

}catch(MalformedURLException e) {

e.printStackTrace();return null;

}catch(IOException e) {

e.printStackTrace();return null;

}

}

//主方法,只有服务号才能使用客服图文消息,实现点击图文链接,直接跳转到指定URL

@Testpublic voidtestsendTextByOpenids(){//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=newURL(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();

}

}

//创建发送的数据privateString createGroupText(JSONArray array){

JSONObject gjson=newJSONObject();//JSONObject json = getUserOpenids(array.get(3).toString()); //array参数是用户组所有的用户,该方法打印array其中一个用户的详细信息

gjson.put("touser", array.get(3));

gjson.put("msgtype", "news");

JSONObject news=newJSONObject();

JSONArray articles=newJSONArray();

JSONObject list=newJSONObject();

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=newJSONObject();

gjson.put("text", text);

gjson.put("news", news);returngjson.toString();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值