增加依靠
- <!-- json剖析器 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.41</version></dependency><!--日记框架 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.10</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.10</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.9</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency>
复造代码 编辑HttpClient东西类(POST/GET)
- package com.dehui.utils;import com.alibaba.fastjson.JSONObject;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.utils.HttpClientUtils;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;publicclassHttpClientHelp{privatestatic Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);// 日记记载privatestatic RequestConfig requestConfig = null;static{// 树立恳求战传输超时时间
- requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();}/**
- * 收收get恳求东西类
- * @param url url
- * @return String 交心前去数据
- */publicstatic String sendGet(String url){//因为httpclient是一个交心不克不及间接截至真例化,需用其完毕子类
- CloseableHttpClient client = HttpClients.createDefault();//准备get恳求界说一个httpget完毕get恳求:
- HttpGet httpget =newHttpGet(url);
- HttpResponse response = null;try{//获得交心前去数据工具
- response = client.execute(httpget);}catch(Exception e){
- e.printStackTrace();}int status = response.getStatusLine().getStatusCode();
- HttpEntity entity = response.getEntity();
- String result = null;try{
- result = EntityUtils.toString(entity);}catch(IOException e){
- e.printStackTrace();}return result;}/**
- * post恳求传输json参数
- * @param url url地点
- * @param Param 参数
- * @return
- */publicstatic String sendPost(String url, String Param){// post恳求前去成果
- CloseableHttpClient httpClient = HttpClients.createDefault();
- String result = null;
- HttpPost httpPost =newHttpPost(url);// 树立恳求战传输超时时间
- httpPost.setConfig(requestConfig);
- httpPost.setHeader("X-Requested-With","X");try{if(null != Param){//处置 华文治码成就
- StringEntity entity =newStringEntity(Param.toString(),"utf-8");
- entity.setContentEncoding("UTF-8");
- entity.setContentType("application/json");
- httpPost.setEntity(entity);}
- CloseableHttpResponse response = httpClient.execute(httpPost);// 恳求收收胜利,并获得照应if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK ||
- response.getStatusLine().getStatusCode()== HttpStatus.SC_CREATED ||
- response.getStatusLine().getStatusCode()== HttpStatus.SC_ACCEPTED ||
- response.getStatusLine().getStatusCode()== HttpStatus.SC_NO_CONTENT){try{// 读与效劳器前去过去的json字符串数据
- result = EntityUtils.toString(response.getEntity(),"utf-8");// 把json字符串变换成json工具//jsonResult = JSONObject.parseObject(str);}catch(Exception e){
- logger.error("post恳求提接失利:"+ url, e);}}}catch(IOException e){
- logger.error("post恳求提接失利:"+ url, e);}finally{
- httpPost.releaseConnection();}return result;}/**
- * post恳求传输String参数 比方:name=Jack&sex=1&type=2
- * Content-type:application/x-www-form-urlencoded
- *
- * @param url url地点
- * @param strParam 参数
- * @return
- */publicstatic String httpPost(String url, String strParam){// post恳求前去成果
- CloseableHttpClient httpClient = HttpClients.createDefault();
- String result ="";
- HttpPost httpPost =newHttpPost(url);
- httpPost.setConfig(requestConfig);try{if(null != strParam){//处置 华文治码成就
- StringEntity entity =newStringEntity(strParam,"utf-8");
- entity.setContentEncoding("UTF-8");
- entity.setContentType("application/x-www-form-urlencoded");
- httpPost.setEntity(entity);}
- CloseableHttpResponse response = httpClient.execute(httpPost);// 恳求收收胜利,并获得照应if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){try{// 读与效劳器前去过去的json字符串数据
- result = EntityUtils.toString(response.getEntity(),"utf-8");}catch(Exception e){
- logger.error("post恳求提接失利:"+ url, e);}}}catch(IOException e){
- logger.error("post恳求提接失利:"+ url, e);}finally{
- httpPost.releaseConnection();}return result;}}
复造代码 编辑挪用企微API办法类
- package com.dehui.utils;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.text.ParseException;import java.util.Formatter;/**
- *
- * 1.获得accessToken
- * 2.获得jsapi中的ticket
- * 3.天生jsapiz中的鉴权sign
- * 4.按照传进的临时code获得用户的根本疑息,进userinfo
- * 5.(ISV版原)按照userid获得具体用户疑息
- *
- * @author lnexin
- *
- */publicclassAuthHelper{// 企微api相干static String TOKEN_URL ="https://qyapi.weixin.qq.com/cgi-bin/gettoken";static String TICKET_URL ="https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket";static String USER_INFO_URL ="https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo";static String USER_ALL_URL ="https://qyapi.weixin.qq.com/cgi-bin/user/get";static String MESSAGE_URL ="https://qyapi.weixin.qq.com/cgi-bin/message/send";// 调解到1小时50分钟publicstaticfinallong cacheTime =1000*60*55*2;privatestatic String ACCESS_TOKEN = null;privatestatic String JSAPI_TICKET = null;privatestaticlong LAST_TIME =0;/**
- *
- * @param corpId
- * @param corpSecert
- * @return 取企微效劳器恳求天生的accessToken
- */publicstatic String getAccessToken(String corpId, String corpSecert){long curTime = System.currentTimeMillis();long differ = curTime - LAST_TIME;if(ACCESS_TOKEN != null && differ < cacheTime)return ACCESS_TOKEN;
- ACCESS_TOKEN =requestAccessToken(corpId, corpSecert);
- LAST_TIME = curTime;return ACCESS_TOKEN;}/**
- *
- * @param accessToken
- * @return 一个用于js鉴权的ticket
- */publicstatic String getJsapiTicket(String accessToken){long curTime = System.currentTimeMillis();long differ = curTime - LAST_TIME;if(JSAPI_TICKET != null && differ < cacheTime){return JSAPI_TICKET;}
- JSAPI_TICKET =requestJsapiTicket(accessToken);return JSAPI_TICKET;}/**
- *依据 传进的相干参数天生sign
- *
- * @param ticket
- * @param nonceStr
- * @param timeStamp
- * @param url
- * @return
- */publicstatic String sign(String ticket, String nonceStr,long timeStamp, String url){
- StringBuffer plain =newStringBuffer();
- plain.append("jsapi_ticket=").append(ticket);
- plain.append("&noncestr=").append(nonceStr);
- plain.append("×tamp=").append(String.valueOf(timeStamp));
- plain.append("&url=").append(url);
- MessageDigest sha;try{
- sha = MessageDigest.getInstance("SHA-1");
- sha.reset();
- sha.update(plain.toString().getBytes("UTF-8"));returnbytesToHex(sha.digest());}catch(NoSuchAlgorithmException e){
- e.printStackTrace();}catch(UnsupportedEncodingException e){
- e.printStackTrace();}return null;}privatestatic String requestAccessToken(String corpId, String corpSecert){
- StringBuffer url =newStringBuffer(TOKEN_URL);
- url.append("?corpid=").append(corpId);
- url.append("&corpsecret=").append(corpSecert);
- String result = null;try{
- result = HttpClientHelp.sendGet(url.toString());}catch(Exception e){
- result = ReturnUtil.result("-1","恳求accessTokenc堕落!corpid:"+ corpId +",corpsecert:"+ corpSecert +"非常疑息:"+ e,"");}return result;}privatestatic String requestJsapiTicket(String accessToken){
- StringBuffer url =newStringBuffer(TICKET_URL);
- url.append("?access_token=").append(accessToken);
- String result = null;try{
- result = HttpClientHelp.sendGet(url.toString());}catch(Exception e){
- result = ReturnUtil.result("-1","恳求JsapiTicket堕落!accessToken:"+ accessToken +"非常疑息:"+ e,"");}return result;}privatestatic String bytesToHex(byte[] hash){
- Formatter formatter =newFormatter();for(byte b : hash){
- formatter.format("%02x", b);}
- String result = formatter.toString();
- formatter.close();return result;}/**
- * 获得用户疑息
- *
- * @param code
- * 用户响应的临时code
- * @param accessToken
- * 按照响应corpid战corpsecret天生的access_token
- * @return 用户ID等相干疑息
- */publicstatic String getUserInfo(String code, String accessToken){
- StringBuffer url =newStringBuffer(USER_INFO_URL);
- url.append("?access_token=").append(accessToken);
- url.append("&code=").append(code);
- String result = null;try{
- result = HttpClientHelp.sendGet(url.toString());}catch(Exception e){
- result = ReturnUtil.result("-1","恳求User疑息堕落!code:"+ code +"非常疑息:"+ e,"");}return result;}/**
- * 获得用户具体疑息
- * @param userid 正在某个corpid下的唯一用户userid
- * @param accessToken 据响应corpid战corpsecret天生的access_token
- * @return
- */publicstatic String getUser(String userid, String accessToken){
- StringBuffer url =newStringBuffer(USER_ALL_URL);
- url.append("?access_token=").append(accessToken);
- url.append("&userid=").append(userid);
- String result = null;try{
- result = HttpClientHelp.sendGet(url.toString());}catch(Exception e){
- result = ReturnUtil.result("-1","恳求User疑息堕落!userid:"+ userid +"非常疑息:","");}return result;}/**
- * @param accessToken
- * @param param 启拆参数
- * @return 企微收收消息
- * @throws ParseException
- */publicstatic String sendMessage(String accessToken,String param){
- StringBuffer url =newStringBuffer(MESSAGE_URL);
- url.append("?access_token=").append(accessToken);
- String result = null;try{
- result = HttpClientHelp.sendPost(url.toString(),param);}catch(Exception e){
- result = ReturnUtil.result("-1","收收消息堕落!param:"+ param +"非常疑息:","");}return result;}}
复造代码 编辑尝试类尝试
- package com.dehui.test;import com.alibaba.fastjson.JSONObject;import com.dehui.utils.AuthHelper;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;/**
- * @Author: hjz
- * @Date: 2020/5/29 13:03
- * @Description:
- */publicclassTestDemo{publicstaticvoidmain(String[] args){
- String corpId ="用自己的";
- String corpSecert ="用自己的";//下边的参数也用自己企微对于应的//企微民间API地点:https://work.weixin.qq.com/api/doc/90001/90143/91201//尝试获得AccessToken
- String result = AuthHelper.getAccessToken(corpId, corpSecert);
- System.out.println("result: "+result);
- JSONObject jsStr = JSONObject.parseObject(result);
- String accessToken = jsStr.getString("access_token");//尝试收收企微消息
- String FileName ="新修文献夹.txt";//启拆参数
- JSONObject template =newJSONObject();
- Map<String, String> map =newHashMap<String,String>();
- Date currentTime =newDate();//改动输出格局(自己念要的格局)
- SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");//获得字符串时间
- String time = formatter.format(currentTime);
- map.put("title","文献同享提醒");
- map.put("description","<div class="gray">"+time+"</div> <div class="highlight">XXX分享给您一个文献</div> <div class="gray">"+FileName+"</div>");
- map.put("url","www.百度.com");
- map.put("btntxt","概略");
- template.put("touser","HeJianZhuang");
- template.put("msgtype","textcard");
- template.put("agentid","1000002");
- template.put("textcard",map);
- String sendResult = AuthHelper.sendMessage(accessToken, template.toString());
- System.out.println("sendResult:"+sendResult);}}
复造代码 *如寓目小同伴有甚么成就随时提问 * |