zoukankan      html  css  js  c++  java
  • 使用Java程序发送企业微信

    Java程序发送微信消息,全部代码,已测试通过

    urlData.java   “微信授权请求”数据对象文件:

     1 package Alert.weChat;
     2 
     3 public class urlData {
     4     String corpid;
     5     String corpsecret;
     6     String Get_Token_Url;
     7     String SendMessage_Url;
     8     
     9     public String getCorpid() {
    10         return corpid;
    11     }
    12     public void setCorpid(String corpid) {
    13         this.corpid = corpid;
    14     }
    15     public String getCorpsecret() {
    16         return corpsecret;
    17     }
    18     public void setCorpsecret(String corpsecret) {
    19         this.corpsecret = corpsecret;
    20     }
    21     public void setGet_Token_Url(String corpid,String corpsecret) {
    22         this.Get_Token_Url ="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret;
    23     }
    24     public String getGet_Token_Url() {
    25         return Get_Token_Url;
    26     }
    27     public String getSendMessage_Url(){
    28         SendMessage_Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=";
    29         return SendMessage_Url;
    30     }
    31     
    32 }

    weChatData.java  “微信消息发送”的post数据对象文件:

     1 package Alert.weChat;
     2 
     3 
     4 public class weChatData {
     5     //发送微信消息的URL
     6 //    String sendMsgUrl="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=";
     7     String touser;
     8     String msgtype;
     9     int agentid;
    10     Object text;//实际接收Map类型数据
    11 
    12     public Object getText() {
    13         return text;
    14     }
    15     public void setText(Object text) {
    16         this.text = text;
    17     }
    18     public String getMsgtype() {
    19         return msgtype;
    20     }
    21     public void setMsgtype(String msgtype) {
    22         this.msgtype = msgtype;
    23     }
    24     public int getAgentid() {
    25         return agentid;
    26     }
    27     public void setAgentid(int agentid) {
    28         this.agentid = agentid;
    29     }
    30     public String getTouser() {
    31         return touser;
    32     }
    33     public void setTouser(String touser) {
    34         this.touser = touser;
    35     }
    36 
    37 }

    send_weChatMsg.java  “发送微信实体”代码

      1 package Alert.weChat;
      2 
      3 import java.io.IOException;
      4 import java.text.SimpleDateFormat;
      5 import java.util.Date;
      6 import java.util.HashMap;
      7 import java.util.Map;
      8 
      9 import org.apache.http.HttpEntity;
     10 import org.apache.http.client.methods.CloseableHttpResponse;
     11 import org.apache.http.client.methods.HttpGet;
     12 import org.apache.http.client.methods.HttpPost;
     13 import org.apache.http.entity.StringEntity;
     14 import org.apache.http.impl.client.CloseableHttpClient;
     15 import org.apache.http.impl.client.HttpClients;
     16 import org.apache.http.util.EntityUtils;
     17 import org.slf4j.LoggerFactory;
     18 
     19 import com.google.gson.Gson;
     20 import com.google.gson.reflect.TypeToken;
     21 
     22 
     23 public class send_weChatMsg {
     24      private CloseableHttpClient httpClient;
     25      private HttpPost httpPost;//用于提交登陆数据
     26      private HttpGet httpGet;//用于获得登录后的页面
     27      public static final String CONTENT_TYPE = "Content-Type";
     28      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//
     29     
     30 
     31     private static Gson gson = new Gson();
     32 
     33 
     34     /**
     35      * 微信授权请求,GET类型,获取授权响应,用于其他方法截取token
     36      * @param Get_Token_Url
     37      * @return String 授权响应内容
     38      * @throws IOException
     39      */
     40     protected String toAuth(String Get_Token_Url) throws IOException {
     41         
     42         httpClient = HttpClients.createDefault();
     43         httpGet = new HttpGet(Get_Token_Url);
     44         CloseableHttpResponse response = httpClient.execute(httpGet);
     45         String resp;
     46         try {
     47             HttpEntity entity = response.getEntity();
     48             resp = EntityUtils.toString(entity, "utf-8");
     49             EntityUtils.consume(entity);
     50         } finally {
     51             response.close();
     52         }
     53         LoggerFactory.getLogger(getClass()).info(" resp:{}", resp);
     54         return resp;
     55     }
     56 
     57     /**
     58      * 获取toAuth(String Get_Token_Url)返回结果中键值对中access_token键的值
     59      * @param corpid应用组织编号   corpsecret应用秘钥
     60      */    
     61     protected  String getToken(String corpid,String corpsecret) throws IOException {        
     62         send_weChatMsg sw = new send_weChatMsg();
     63         urlData uData = new urlData();
     64         uData.setGet_Token_Url(corpid,corpsecret);
     65         String resp = sw.toAuth(uData.getGet_Token_Url());
     66         
     67         Map<String, Object> map = gson.fromJson(resp,
     68                 new TypeToken<Map<String, Object>>() {
     69                 }.getType());
     70         return map.get("access_token").toString();
     71     }
     72 
     73     
     74     /** 
     75     * @Title:创建微信发送请求post数据  
     76     * @param  touser发送消息接收者    ,msgtype消息类型(文本/图片等),
     77     * @param application_id应用编号。
     78     * @param 本方法适用于text型微信消息,contentKey和contentValue只能组一对
     79     * @return String     
     80     */
     81     protected String createpostdata(String touser, String msgtype,
     82             int application_id, String contentKey ,String contentValue) {
     83         weChatData wcd = new weChatData();
     84         wcd.setTouser(touser);
     85         wcd.setAgentid(application_id);
     86         wcd.setMsgtype(msgtype);
     87         Map<Object, Object> content = new HashMap<Object, Object>();
     88         content.put(contentKey,contentValue+"
    --------
    "+df.format(new Date()));
     89         wcd.setText(content);
     90         return gson.toJson(wcd);
     91     }
     92 
     93     /** 
     94     * @Title  创建微信发送请求post实体
     95     * @param  charset消息编码    ,contentType消息体内容类型,
     96     * @param  url微信消息发送请求地址,data为post数据,token鉴权token
     97     * @return String     
     98     */
     99     public String post(String charset, String contentType, String url,
    100             String data,String token) throws IOException {
    101         CloseableHttpClient httpclient = HttpClients.createDefault();
    102         httpPost = new HttpPost(url+token);
    103         httpPost.setHeader(CONTENT_TYPE, contentType);
    104         httpPost.setEntity(new StringEntity(data, charset));
    105         CloseableHttpResponse response = httpclient.execute(httpPost);
    106         String resp;
    107         try {
    108             HttpEntity entity = response.getEntity();
    109             resp = EntityUtils.toString(entity, charset);
    110             EntityUtils.consume(entity);
    111         } finally {
    112             response.close();
    113         }
    114         LoggerFactory.getLogger(getClass()).info(
    115                 "call [{}], param:{}, resp:{}", url, data, resp);
    116         return resp;
    117     }
    118     
    119 }

    test.java  测试程序

     1 package Alert.weChat;
     2 
     3 import java.io.IOException;
     4 
     5 public class test {
     6     public static void main(String[] args) {
     7         send_weChatMsg sw = new send_weChatMsg();
     8         try {
     9             String token = sw.getToken("wxbXXXXX","YYYYYYYYYY");
    10             String postdata = sw.createpostdata("Luosu", "text", 1, "content","This alert Email come from IapppayBJQA");
    11             String resp = sw.post("utf-8", send_weChatMsg.CONTENT_TYPE,(new urlData()).getSendMessage_Url(), postdata, token);
    12             System.out.println("获取到的token======>" + token);
    13             System.out.println("请求数据======>" + postdata);
    14             System.out.println("发送微信的响应数据======>" + resp);
    15         } catch (IOException e) {
    16             e.printStackTrace();
    17         }
    18     }
    19 }

    test.java代码输出:

    1 log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
    2 log4j:WARN Please initialize the log4j system properly.
    3 log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    4 获取到的token======>_kv4OeDXcsXIUG6lWwQCbz12thqlAN8HGhzx4B_HBRnYCQpt5CxwnnyMThS2ep3V
    5 请求数据======>{"touser":"AAA","msgtype":"text","agentid":1,"text":{"content":"This alert Email come from IapppayBJQA
    --------
    2017-03-17 09:06:45"}}
    6 发送微信的响应数据======>{"errcode":0,"errmsg":"ok"}

  • 相关阅读:
    CF1452F Divide Powers 题解
    ZOJ3705Applications
    ZOJ3706Break Standard Weight
    关于技术的感悟与规划
    做自己不愿做的事叫成长,做以前不敢做的事叫突破
    CSS之盒模型
    js数组的sort排序详解
    C#接口
    jQuery UI Dialog:Demo1:入门
    CSS之position解释
  • 原文地址:https://www.cnblogs.com/kuzaman/p/6564632.html
Copyright © 2011-2022 走看看