diff --git a/code/java/天气灾害预警/disaster_warning.iml b/code/java/天气灾害预警/disaster_warning.iml index c49b959..a81e62d 100644 --- a/code/java/天气灾害预警/disaster_warning.iml +++ b/code/java/天气灾害预警/disaster_warning.iml @@ -32,5 +32,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/code/java/天气灾害预警/disaster_warning.ipr b/code/java/天气灾害预警/disaster_warning.ipr index f390bf0..32c76fe 100644 --- a/code/java/天气灾害预警/disaster_warning.ipr +++ b/code/java/天气灾害预警/disaster_warning.ipr @@ -21,6 +21,8 @@ + + diff --git a/code/java/天气灾害预警/src/main/java/com/cpic/xim/wechat/officalAccount/PushMessage.java b/code/java/天气灾害预警/src/main/java/com/cpic/xim/wechat/officalAccount/PushMessage.java index 41dc318..6ca9db6 100644 --- a/code/java/天气灾害预警/src/main/java/com/cpic/xim/wechat/officalAccount/PushMessage.java +++ b/code/java/天气灾害预警/src/main/java/com/cpic/xim/wechat/officalAccount/PushMessage.java @@ -1,10 +1,18 @@ package com.cpic.xim.wechat.officalAccount; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.*; + +import java.net.MalformedURLException; +import java.net.URL; +import java.net.HttpURLConnection; + + public class PushMessage { @@ -22,24 +30,97 @@ public class PushMessage String notifyMessage ) { + //设置推送内容 WechatOfficalAccountMessageParameter param = new WechatOfficalAccountMessageParameter(); - //param.setUrl( url ); param.setFirst( title ); param.setKeyword1( notifyType ); param.setKeyword1Color( "#ff000000" ); param.setKeyword2( notifyMessage ); - ObjectMapper mapper = new ObjectMapper(); + //转换成json + ObjectMapper mapper = null; + String json = null; try { - String json = mapper.writeValueAsString( param ); + mapper = new ObjectMapper(); + mapper.setSerializationInclusion( JsonInclude.Include.NON_NULL ); + + json = mapper.writeValueAsString( param ); + + System.out.println( json ); } catch ( JsonProcessingException error ) { - + error.printStackTrace(); } + + //推送数据 + URL url = null; + HttpURLConnection connection = null; + + StringBuffer result = new StringBuffer(); + OutputStreamWriter out = null; + BufferedReader in = null; + + try + { + url = new URL( wechatOfficalAccountURL ); + connection = (HttpURLConnection) url.openConnection(); + + connection.setRequestMethod( "POST" ); + connection.setRequestProperty( "accept", "*/*" ); + connection.setRequestProperty( "Connection", "Keep-Alive" ); + connection.setRequestProperty( "Content-Type", "application/json" ); + connection.setDoInput( true ); + connection.setDoOutput( true ); + connection.connect(); + + out = new OutputStreamWriter( connection.getOutputStream(), "UTF-8" ); + out.write( json ); + out.flush(); + + in = new BufferedReader( new InputStreamReader( connection.getInputStream() ) ); + + String line = in.readLine(); + + while ( line != null ) + { + result.append( line ); + + line = in.readLine(); + } + } + catch ( Exception error ) + { + error.printStackTrace(); + } + finally + { + try + { + if ( in != null ) + { + in.close(); + } + + if ( out != null ) + { + out.close(); + } + + if ( connection != null ) + { + connection.disconnect(); + } + } + catch ( Exception error ) + { + error.printStackTrace(); + } + } + } } diff --git a/code/java/天气灾害预警/src/test/java/com/cpic/xim/wechat/officalAccount/PushMessageTest.java b/code/java/天气灾害预警/src/test/java/com/cpic/xim/wechat/officalAccount/PushMessageTest.java new file mode 100644 index 0000000..f74520a --- /dev/null +++ b/code/java/天气灾害预警/src/test/java/com/cpic/xim/wechat/officalAccount/PushMessageTest.java @@ -0,0 +1,24 @@ +package com.cpic.xim.wechat.officalAccount; + +import com.fasterxml.jackson.core.JsonProcessingException; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class PushMessageTest +{ + @Test + public void pushNotifyMessage() + { + String url = "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage"; + + try + { + PushMessage.PushNotifyMessage( url, "警报", "警报标题", "警报内容!" ); + } + catch ( Exception error ) + { + fail("测试失败!"); + } + } +} \ No newline at end of file diff --git a/文档/example.java b/文档/example.java index ad179ac..7e3711a 100644 --- a/文档/example.java +++ b/文档/example.java @@ -2,57 +2,54 @@ * @Author: Kane * @Date: 2022-04-18 11:37:33 * @LastEditors: Kane - * @LastEditTime: 2022-04-18 11:41:09 + * @LastEditTime: 2022-04-18 15:58:34 * @FilePath: \undefinedd:\develop\产险厦门分公司项目\天气灾害预警\文档\example.java - * @Description: - * - * Copyright (c) ${2022} by Kane, All Rights Reserved. - */ -import org.apache.commons.httpclient.HttpClient; + +import org.apache.httpcomponents.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.StringRequestEntity; public class HttpUtils { - public static String sendPostWithJson(String url, String jsonStr, HashMap headers) { - // 返回的结果 - String jsonResult = ""; + public static String sendPostWithJson(String url, String jsonStr, HashMap headers) { + // 返回的结果 + String jsonResult = ""; - try { - HttpClient client = new HttpClient(); - // 连接超时 - client.getHttpConnectionManager().getParams().setConnectionTimeout(3*1000); - // 读取数据超时 - client.getHttpConnectionManager().getParams().setSoTimeout(3*60*1000); - client.getParams().setContentCharset("UTF-8"); + try { + HttpClient client = new HttpClient(); - PostMethod postMethod = new PostMethod(url); - - postMethod.setRequestHeader("content-type", headers.get("content-type")); - - // 非空 - if (null != jsonStr && !"".equals(jsonStr)) - { - StringRequestEntity requestEntity = new StringRequestEntity(jsonStr, headers.get("content-type"), "UTF-8"); - postMethod.setRequestEntity(requestEntity); - } + // 连接超时 + client.getHttpConnectionManager().getParams().setConnectionTimeout(3 * 1000); + // 读取数据超时 + client.getHttpConnectionManager().getParams().setSoTimeout(3 * 60 * 1000); + client.getParams().setContentCharset("UTF-8"); - int status = client.executeMethod(postMethod); + PostMethod postMethod = new PostMethod(url); - if (status == HttpStatus.SC_OK) { - jsonResult = postMethod.getResponseBodyAsString(); - } else { - throw new RuntimeException("接口连接失败!"); - } + postMethod.setRequestHeader("content-type", headers.get("content-type")); - } catch (Exception e) { - throw new RuntimeException("接口连接失败!"); - } - return jsonResult; - } + // 非空 + if (null != jsonStr && !"".equals(jsonStr)) { + StringRequestEntity requestEntity = new StringRequestEntity(jsonStr, headers.get("content-type"), + "UTF-8"); + postMethod.setRequestEntity(requestEntity); + } - public static void main(String[] args) - { + int status = client.executeMethod(postMethod); + + if (status == HttpStatus.SC_OK) { + jsonResult = postMethod.getResponseBodyAsString(); + } else { + throw new RuntimeException("接口连接失败!"); + } + + } catch (Exception e) { + throw new RuntimeException("接口连接失败!"); + } + return jsonResult; + } + + public static void main(String[] args) { String requestUrl = "http://localhost:8070/test/rz/server/rzxx/at_VaildToken.do"; String jsonStr = "{\"name\":\"张三\"}"; @@ -60,11 +57,155 @@ public class HttpUtils { headers.put("content-type", "application/json"); // 发送post请求 - String resultData = HttpUtils.sendPostWithJson(requestUrl, jsonStr,headers); - + String resultData = HttpUtils.sendPostWithJson(requestUrl, jsonStr, headers); + // 并接收返回结果 System.out.println(resultData); } - - + +} + + /** + * + * @author : cjd + * + * @description : post接口 返回结果字符串 + * + * @params : [url, param] + * + * @param url 请求接口 + * + * @param param 需要的json字符串 + * + * @return :java.lang.String + * + * @date : 17:31 2018/8/1 + * + */ + + public static String sendPost(String url, String param) + { + OutputStreamWriter out = null; + BufferedReader in = null; + + String result = ""; + + try { + URL realUrl = new URL(url); + HttpURLConnection conn = null; // 打开和URL之间的连接 + + conn = (HttpURLConnection) realUrl.openConnection(); // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setRequestMethod("POST"); // POST方法 + + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); + conn.connect(); // 获取URLConnection对象对应的输出流 + + out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); // 发送请求参数 + out.write(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; + +} + + +public String postMethod(String url,String param){ + // 结果值 + StringBuffer rest=new StringBuffer(); + + HttpURLConnection conn=null; + OutputStream out=null; + BufferedReader br=null; + + try { + // 创建 URL + URL restUrl = new URL(url); + // 打开连接 + conn= (HttpURLConnection) restUrl.openConnection(); + // 设置请求方式为 POST + conn.setRequestMethod("POST"); + conn.setRequestProperty("Connection","keep-Alive"); + // 设置接收文件类型 +// conn.setRequestProperty("Accept","application/json"); + //设置发送文件类型 + /** + 这里注意 传递JSON数据的话 就要设置 + 普通参数的话 就要注释掉 + */ + conn.setRequestProperty("Content-Type","application/json"); + // 输入 输出 都打开 + conn.setDoOutput(true); + conn.setDoInput(true); + //开始连接 + conn.connect(); + + // 传递参数 流的方式 + out=conn.getOutputStream(); + out.write(param.getBytes()); + out.flush(); + + // 读取数据 + br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8")); + String line=null; + while (null != (line=br.readLine())){ + rest.append(line); + } + + } catch (Exception e) { + e.printStackTrace(); + }finally { + // 关闭所有通道 + try { + if (br!=null) { + br.close(); + } + if (out!=null) { + out.close(); + } + if (conn!=null) { + conn.disconnect(); + } + } catch (Exception e2) { + e2.printStackTrace(); + } + } + return rest.toString(); }