/*** 微信发送消息

*

*@authorPC-MXF

**/

public classWeChatMsgSend {privateCloseableHttpClient httpClient;/*** 用于提交登录数据*/

privateHttpPost httpPost;/*** 用于获得登陆后页面*/

privateHttpGet httpGet;public static final String CONTENT_TYPE = "Content-Type";

SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");private static Gson gson = newGson();/*** 微信授权请求,GET类型,获取授权响应,用于其他方法截取token

*

*@paramGet_Token_Url

*@returnString 授权响应内容

*@throwsIOException*/

protected String toAuth(String Get_Token_Url) throwsIOException {

httpClient=HttpClients.createDefault();

httpGet= newHttpGet(Get_Token_Url);

CloseableHttpResponse response=httpClient.execute(httpGet);

String resp= "";try{

HttpEntity entity=response.getEntity();

resp= EntityUtils.toString(entity, "utf-8");

EntityUtils.consume(entity);

}catch(Exception e) {

e.getStackTrace();

}finally{

response.close();

}

LoggerFactory.getLogger(getClass()).info(" resp:{}", resp);returnresp;

}/*** corpid应用组织编号 corpsecret应用秘钥 获取toAuth(String

* Get_Token_Url)返回结果中键值对中access_token键的值

*

*@param

*/

public String getToken(String corpid, String corpsecret) throwsIOException {

WeChatMsgSend sw= newWeChatMsgSend();

WeChatUrlData uData= newWeChatUrlData();

uData.setGet_Token_Url(corpid, corpsecret);

String resp=sw.toAuth(uData.getGet_Token_Url());

System.out.println("resp=====:" +resp);try{

Map map = gson.fromJson(resp, new TypeToken>() {

}.getType());return map.get("access_token").toString();

}catch(Exception e) {

e.getStackTrace();returnresp;

}

}/*** 创建微信发送请求post数据 touser发送消息接收者 ,msgtype消息类型(文本/图片等), application_id应用编号。

* 本方法适用于text型微信消息,contentKey和contentValue只能组一对

*

*@paramtouser

*@parammsgtype

*@paramapplication_id

*@paramcontentKey

*@paramcontentValue

*@return

*/

public String createpostdata(String touser, String msgtype, intapplication_id, String contentKey,

String contentValue) {

WeChatData wcd= newWeChatData();

wcd.setTouser(touser);

wcd.setAgentid(application_id+ "");

wcd.setMsgtype(msgtype);

Map content = new HashMap();

content.put(contentKey, contentValue);

wcd.setText(content);returngson.toJson(wcd);

}/*** @Title 创建微信发送请求post实体,charset消息编码 ,contentType消息体内容类型,

* url微信消息发送请求地址,data为post数据,token鉴权token

*@paramcharset

*@paramcontentType

*@paramurl

*@paramdata

*@paramtoken

*@return*@throwsIOException*/

public String post(String charset, String contentType, String url, String data, String token) throwsIOException {

CloseableHttpClient httpclient=HttpClients.createDefault();

httpPost= new HttpPost(url +token);

httpPost.setHeader(CONTENT_TYPE, contentType);

httpPost.setEntity(newStringEntity(data, charset));

CloseableHttpResponse response=httpclient.execute(httpPost);

String resp;try{

HttpEntity entity=response.getEntity();

resp=EntityUtils.toString(entity, charset);

EntityUtils.consume(entity);

}finally{

response.close();

}

LoggerFactory.getLogger(getClass()).info("call [{}], param:{}, resp:{}", url, data, resp);returnresp;

}

}

python企业微信特定用户_使用企业微信的API给指定用户发送消息相关推荐

  1. 【.net】通过企业微信web api给指定用户发送消息

    前言 在很多业务场景中经常会遇到与微博微信进行通信的需求,今天就和大家一起研究一下如果通过企业微信web api给指定用户发送消息 一.创建应用 1.打开企业微信并登录 https://work.we ...

  2. python企业微信群聊_给企业微信加个群机器人

    现在很多企业在使用企业微信或钉钉进行工作交流,我们可以在群里添加一个自定义群机器人,定时发送一些提醒或咨询信息,它可以作为一个小组手,也为工作增加一点乐趣. 群机器人 下面是企业微信和钉钉的群机器人文 ...

  3. 使用企业微信的API给指定用户发送消息

    上个月比较忙,等不忙了继续写点基础教程(五一还在高铁上写项目在).因为公司的原因,自己学习了点JavaWeb的知识,重新写了一个简单的后台管理,用于记录用户注册信息的.其中有这样的一个要求,就是在用户 ...

  4. 企业研发人员配备比例_高新企业研发人员占比多少

    高新企业研发人员占比多少 (一)申请高新企业的年限要求: <认定办法>第十一条"须注册成立一年以上"是指企业须注册成立365个日历天数以上;"当年" ...

  5. python爬取微信群聊天信息_美女出没微信群 不是来聊天专门抢红包

    原标题:美女出没微信群 不是来聊天专门抢红包 "各位伙伴,最近发现一群人借用美女头像,伺机而动加入众多微信群,主要目的就是用软件工具抢红包,经常起哄新人加入或微信发红包,不但占用微信群资源, ...

  6. 如何自建微信外卖平台_如何建立微信点餐平台 微信小程序外卖怎么做

    餐道(candao.com)3月15日观察:如今越来越多人使用微信小程序点餐,对于商家来说,这是一个新的业务拓展渠道.那么,微信小程序外卖怎么做呢?首先,我们需要建立一个微信点餐平台.下面小编就教大家 ...

  7. 忘了微信密码怎么办_我的微信忘记密码怎么找回

    展开全部 登录个人微copy信帐号界面有个忘bai记密码,然后选择du手机找回,会给zhi你的手机号发送一个dao短信,根据短信内容操作即可. 1.登录个人微信账号,并点击右下角的:我--设置,进入个 ...

  8. 企业破产重整网_全国企业破产重整案件信息网今天正式上线开通

    &nbsp&nbsp&nbsp&nbsp央广网北京8月1日消息(记者杜希萌)最高人民法院今天宣布:全国企业破产重整案件信息网今天正式上线开通. &nbsp&am ...

  9. python批量删除特定字符_根据某个特定字符删除一行

    前言 最近接了几个新项目的需求,为了快速开发,我们的策略是:基于原来的一套维定项目代码及数据库基础,去开发新的项目,一般步骤如下: 在原来的代码git基础上拉出一个新的git项目地址 修改代码的项目名 ...

最新文章

  1. fastJson结合Nutz.Mapl的进阶应用
  2. RESTful API -备
  3. Spring ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别
  4. android 自定义apk名,Android Studio多渠道打包、自定义打包APK名称
  5. _Linux 的文件系统及文件缓存知识点整理
  6. SQL Server【三】连接查询
  7. 引出发射和什么是反射和Class类和Class实例、基本类型的字节码对象
  8. android 动态地改变某控件的大小
  9. 【yarn】INFO ipc.Client Retrying connect to server xxx 8032 Already tried 0 time(s)
  10. C#.Net工作笔记018---葡萄城控件FlexGrid自定义单元格_以及给自定义控件添加自定义事件
  11. Vue提示warn:”[vue-router] Named Route ‘home’ has a default child route…”
  12. python import as 实例化_python中import list,dictionary常量在class实例化时遇到的坑
  13. macbook pro2020无法识别西部数据2T硬盘
  14. 砍价永远差一刀?拼多多法庭上回复:小数点后有6位···
  15. 微信支付当前页面的URL未注册问题[单页面]
  16. 特征点检测效果评估(matlab代码)
  17. 哔哩哔哩怎么调节屏幕亮度
  18. 全国代收货款平台-快递鸟、菜鸟
  19. wx.downloadFile 隐藏bug
  20. 展锐Android11安兔兔显示的光圈值修正

热门文章

  1. ajax的responseText是什么东西
  2. Android 使用ColorMatrix改变图片颜色
  3. 文章p标签css首行缩进text-indent后,图片img怎么设置不缩进解决办法
  4. 【大数据】搭建Hadoop集群,超级详细
  5. WordPress 更换域名后访问后台跳转老域名解决办法
  6. char/nchar/varchar/nvarchar/varchar2之间如何选择使用?
  7. mysql 安装 大_MYSQL安装问题amp;使用大收集 - 包子 - ITeye博客
  8. 1.8 寻找失落的Photoshop彩蛋 [Ps教程]
  9. 微策略MicroStrategy校园招聘2013.10.21面试题
  10. NP0、C0G、X7R、X5R、Y5V、Z5U的区别