From 04df173309d9ac5b3c0d472a56c03b3533da6137 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 22:03:51 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=B7=A5=E5=85=B7=E4=BC=98=E5=8C=96=E3=80=91-?= =?UTF-8?q?=E7=8E=8B=E5=85=AC=E5=B3=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/service/impl/MessageServiceImpl.java | 54 +++----- .../elink/esua/epdc/utils/HttpRequest.java | 126 ++++++++++++++++++ 2 files changed, 146 insertions(+), 34 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/HttpRequest.java diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 91b9af4af..9d2a677b9 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -8,8 +8,6 @@ import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.TemplateData; -import com.elink.esua.epdc.dto.WxAccessTokenBean; -import com.elink.esua.epdc.dto.WxMssVo; import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO; import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; @@ -19,15 +17,14 @@ import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.MessageFeignClient; import com.elink.esua.epdc.feign.UserFeignClient; import com.elink.esua.epdc.service.MessageService; +import com.elink.esua.epdc.utils.HttpRequest; import com.elink.esua.epdc.utils.WxMaServiceUtils; import com.google.common.collect.Lists; -import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.ResponseEntity; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.stereotype.Service; @@ -95,23 +92,6 @@ public class MessageServiceImpl implements MessageService { @Value("${wx.message.lang}") private String lang; - @Autowired - private RestTemplate restTemplate; -// private ClientHttpRequestFactory factory; -// @Autowired -// public void setFactory() { -// SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); -// factory.setReadTimeout(5000);//ms -// factory.setConnectTimeout(15000);//ms -// this.factory = factory; -// } -// @Autowired -// public void setRestTemplate() { -// this.restTemplate = new RestTemplate(this.factory); -// } - - - /** * 注册审核失败服务消息模版 */ @@ -330,16 +310,18 @@ public class MessageServiceImpl implements MessageService { public String sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang,String page){ //拼接推送的模版 - WxMssVo wxMssVo = new WxMssVo(); - wxMssVo.setTouser(openId);//用户openid - wxMssVo.setTemplate_id(template_id);//模版id - wxMssVo.setMiniprogram_state(miniprogram_state); - wxMssVo.setData(m); - wxMssVo.setLang(lang); - wxMssVo.setPage(page); - ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); - log.error("小程序推送结果={}", responseEntity.getBody()); - return responseEntity.getBody(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("touser",openId); + jsonObject.put("template_id",template_id); + jsonObject.put("miniprogram_state",miniprogram_state); + jsonObject.put("data",m); + jsonObject.put("lang",lang); + jsonObject.put("page",page); + String parmStr = jsonObject.toJSONString(); + + String sr = HttpRequest.sendPost(url,parmStr); + JSONObject json = JSONObject.parseObject(sr); + return sr; } /** @@ -353,9 +335,13 @@ public class MessageServiceImpl implements MessageService { public String getAccess_token(String appid, String appsecret) { // 获取access_token String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret; - String json = restTemplate.getForObject(url, String.class); - WxAccessTokenBean accessToken = new Gson().fromJson(json, WxAccessTokenBean.class); - return accessToken.getAccess_token(); + String sr = HttpRequest.sendPost(url,""); + + JSONObject json = JSONObject.parseObject(sr); + // 获取会话密钥(session_key) + // 用户的唯一标识(openid) + String access_token = (String) json.get("access_token"); + return access_token; } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/HttpRequest.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/HttpRequest.java new file mode 100644 index 000000000..11f1a0ff0 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/HttpRequest.java @@ -0,0 +1,126 @@ +package com.elink.esua.epdc.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; +import java.util.Map; + +public class HttpRequest { + /** + * 向指定URL发送GET方法的请求 + * + * @param url + * 发送请求的URL + * @param param + * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return URL 所代表远程资源的响应结果 + */ + public static String sendGet(String url, String param) { + String result = ""; + BufferedReader in = null; + try { + String urlNameString = url + "?" + param; + URL realUrl = new URL(urlNameString); + // 打开和URL之间的连接 + URLConnection connection = realUrl.openConnection(); + // 设置通用的请求属性 + connection.setRequestProperty("accept", "*/*"); + connection.setRequestProperty("connection", "Keep-Alive"); + connection.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 建立实际的连接 + connection.connect(); + // 获取所有响应头字段 + Map> map = connection.getHeaderFields(); + // 遍历所有的响应头字段 + for (String key : map.keySet()) { + System.out.println(key + "--->" + map.get(key)); + } + // 定义 BufferedReader输入流来读取URL的响应 + in = new BufferedReader(new InputStreamReader( + connection.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送GET请求出现异常!" + e); + e.printStackTrace(); + } + // 使用finally块来关闭输入流 + finally { + try { + if (in != null) { + in.close(); + } + } catch (Exception e2) { + e2.printStackTrace(); + } + } + return result; + } + + /** + * 向指定 URL 发送POST方法的请求 + * + * @param url + * 发送请求的 URL + * @param param + * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static String sendPost(String url, String param) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数 + out.print(param); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader( + new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!"+e); + e.printStackTrace(); + } + //使用finally块来关闭输出流、输入流 + finally{ + try{ + if(out!=null){ + out.close(); + } + if(in!=null){ + in.close(); + } + } + catch(IOException ex){ + ex.printStackTrace(); + } + } + return result; + } + +}