java读取文件推送报文

接口

 1 package com.lwl.service;
 2 
 3 /**
 4  * 
 5  *
 6  * @author liuwenlong
 7  * @create 2021-11-11 23:48:02
 8  */
 9 @SuppressWarnings("all")
10 public interface IDevelopService {
11 
12     //批量报文推送
13     String BatchPacketPush(String url, String path, String count, String frequency);
14 }

实现类

 1 package com.lwl.service.Impl;
 2 
 3 import com.lwl.service.IDevelopService;
 4 import com.lwl.util.ReadText;
 5 import com.lwl.util.SendPost;
 6 import com.test.controller.BatchPacketPush_test;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.stereotype.Service;
 9 
10 import java.io.File;
11 
12 /**
13  * @author liuwenlong
14  * @create 2021-11-11 23:49:21
15  */
16 @SuppressWarnings("all")
17 @Service
18 public class DevelopServiceImpl implements IDevelopService {
19 
20 
21     /**
22      * 批量推送报文
23      *
24      * @param url       推送地址
25      * @param path      文件所在路径
26      * @param count     文件数量
27      * @param frequency 频率(秒)
28      * @return
29      */
30     @Override
31     public String BatchPacketPush(String url, String path, String count, String frequency) {
32         frequency = String.valueOf(Integer.parseInt(frequency) * 1000); //传入的是秒,先转为毫秒
33         ReadText readText = new ReadText();
34         SendPost sendPost = new SendPost();
35         try {
36             //获取绝对路径下的文件
37             for (int i = 1; i <= Integer.parseInt(count); i++) {
38                 String message = readText.readTxt(new File(path + i + ".txt"));
39                 message = message.replaceAll("\\s*", "");//删除报文中所有空格、空白符等无效字符
40                 System.out.println(message);
41                 //拼接报文
42                 String requestBody = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:les=\"http://www.foton.com.cn/LES_LWL_001_AvailableInventoryInformation\">\n" +
43                         "   <soapenv:Header/>\n" +
44                         "   <soapenv:Body>\n" +
45                         "      <les:LES_LWL_001_AvailableInventoryInformationService>\n" +
46                         "         <les:DATA><![CDATA[" + message + "]]></les:DATA>\n" +
47                         "      </les:LES_LWL_001_AvailableInventoryInformationService>\n" +
48                         "   </soapenv:Body>\n" +
49                         "</soapenv:Envelope>";
50                 //请求接口
51                 String result = sendPost.doPost(url, requestBody);
52                 System.out.println("响应报文:\n" + result);
53                 //发送一个报文后,停一段时间,5000毫秒就是5秒
54                 Thread.sleep(Integer.parseInt(frequency));
55                 System.out.println("成功发送" + i + "次");
56             }
57         } catch (Exception e) {
58             System.out.println(e.getMessage());
59         }
60         return "success";
61     }
62 }

控制层

 1 package com.lwl.controller;
 2 
 3 import com.lwl.entity.Interface;
 4 import com.lwl.service.IDevelopService;
 5 import com.lwl.util.ReadText;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Controller;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import java.io.IOException;
13 import java.io.PrintWriter;
14 
15 /**
16  * @author liuwenlong
17  * @create 2021-11-11 23:46:10
18  */
19 @SuppressWarnings("all")
20 @Controller
21 @RequestMapping(value = "develop")
22 public class DevelopController {
23 
24     @Autowired
25     IDevelopService iDevelopService;
26 
27     /**
28      * 批量推送报文
29      *
30      * @param req
31      * @param resp
32      * @param url       推送地址
33      * @param path      文件所在路径
34      * @param count     数量
35      * @param frequency 频率(秒)
36      * @throws IOException
37      */
38     @RequestMapping(value = "BatchPacketPush")
39     public void BatchPacketPush(HttpServletRequest req, HttpServletResponse resp,
40                                 String url, String path, String count, String frequency) throws IOException {
41         resp.setContentType("text/plain; charset=UTF-8");
42         resp.setCharacterEncoding("UTF-8");
43         PrintWriter out = resp.getWriter();
44         String result = iDevelopService.BatchPacketPush(url, path, count, frequency);
45         System.out.println(result);
46         out.write(result);
47         out.flush();
48     }
49 }

工具类-读取文件

 1 package com.lwl.util;
 2 
 3 import java.io.*;
 4 
 5 /**
 6  * 读取文本文件内容
 7  *
 8  * @author liuwenlong
 9  * @create 2021-11-30 22:05:04
10  */
11 @SuppressWarnings("all")
12 public class ReadText {
13 
14     /**
15      * 读文件
16      *
17      * @param file 文件
18      * @return
19      * @throws IOException
20      * @throws IOException
21      */
22     public static String readTxt(File file) throws IOException, IOException {
23         String s = "";
24         InputStreamReader in = new InputStreamReader(new FileInputStream(file), "UTF-8");
25         BufferedReader br = new BufferedReader(in);
26         StringBuffer content = new StringBuffer();
27         while ((s = br.readLine()) != null) {
28             content = content.append(s);
29         }
30         return content.toString();
31     }
32 }

工具类--post请求API接口

 1 package com.lwl.util;
 2 
 3 import sun.misc.BASE64Encoder;
 4 
 5 import java.io.BufferedReader;
 6 import java.io.IOException;
 7 import java.io.InputStreamReader;
 8 import java.io.OutputStreamWriter;
 9 import java.net.HttpURLConnection;
10 import java.net.URL;
11 import java.nio.charset.StandardCharsets;
12 
13 /**
14  * post请求
15  *
16  * @author liuwenlong
17  * @create 2021-11-30 22:25:00
18  */
19 @SuppressWarnings("all")
20 public class SendPost {
21 
22     /**
23      * Post请求一个地址
24      *
25      * @param URL         请求地址
26      * @param requestBody 请求的body
27      * @return
28      */
29     public String doPost(String URL, String requestBody) {
30         OutputStreamWriter out = null;
31         BufferedReader in = null;
32         StringBuilder result = new StringBuilder();
33         HttpURLConnection conn = null;
34         String username = "账号";
35         String password = "密码";
36         String input = username + ":" + password;
37         try {
38             java.net.URL url = new URL(URL);
39             conn = (HttpURLConnection) url.openConnection();
40             BASE64Encoder base = new BASE64Encoder();
41             String encodedPassword = base.encode(input.getBytes("UTF-8"));
42             System.out.println("加密后的密码:" + encodedPassword);
43             //将加密的账号密码放到请求头里,这里注意Basic后面要加空格
44             conn.setRequestProperty("Authorization", "Basic " + encodedPassword);
45             conn.setRequestMethod("POST");
46             //发送POST请求必须设置为true
47             conn.setDoOutput(true);
48             conn.setDoInput(true);
49             //设置连接超时时间和读取超时时间
50             conn.setConnectTimeout(3000);
51             conn.setReadTimeout(3000);
52             conn.setRequestProperty("Content-Type", "application/json");
53             conn.setRequestProperty("Accept", "application/json");
54             //获取输出流,写入请求的json报文
55             out = new OutputStreamWriter(conn.getOutputStream());
56             System.out.println(requestBody);
57 
58             out.write(requestBody); //获取请求的body,
59             out.flush();
60             out.close();
61             //取得输入流,并使用Reader读取
62             if (200 == conn.getResponseCode()) {
63                 in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
64                 String line;
65                 while ((line = in.readLine()) != null) {
66                     result.append(line);
67                     System.out.println(line);
68                 }
69             } else {
70                 System.out.println("ResponseCode is an error code:" + conn.getResponseCode());
71             }
72         } catch (Exception e) {
73             e.printStackTrace();
74         } finally {
75             try {
76                 if (out != null) {
77                     out.close();
78                 }
79                 if (in != null) {
80                     in.close();
81                 }
82             } catch (IOException ioe) {
83                 ioe.printStackTrace();
84             }
85         }
86         return result.toString();
87     }
88 }

前端页面

 1 <html>
 2 <head>
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 4     <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
 5     <link rel="icon" th:href="@{/public/favicon.ico}" type="image/x-icon"/>
 6     <link rel="bookmark" th:href="@{/public/favicon.ico}" type="image/x-icon"/>
 7     <link rel="stylesheet" href="${pageContext.request.contextPath}/static/layui/css/layui.css">
 8     <script src="${pageContext.request.contextPath}/static/layui/layui.js"></script>
 9     <script type="text/javascript" src="${pageContext.request.contextPath}/static/wms/Js/jquery-1.7.2.min.js"></script>
10 </head>
11 
12 
13 <script>
14 
15     function BtnBatchPacketPush(text, reviver) {
16 
17         const url = $('#url').val().toString();
18         const path = $('#path').val().toString();
19         const count = $('#count').val().toString();
20         const frequency = $('#frequency').val().toString();
21 
22         $.ajax({
23             method: 'post',
24             url: "${pageContext.request.contextPath}/develop/BatchPacketPush",
25             data: {
26                 "url": url,
27                 "path": path,
28                 "count": count,
29                 "frequency": frequency
30             },
31             success: function (res) {
32                 if (res !== "") {
33                     alert(res.toString())
34                 } else {
35                     alert("发送失败!")
36                 }
37             }
38         })
39     }
40 </script>
41 
42 <body>
43 
44 
45 
46 <div style=" 100%;height: 850px;background: white;margin-top: 10px;padding: 10px">
47 
48 
49         <div class="layui-form-item">
50             <label class="layui-form-label">请求地址</label>
51             <div class="layui-input-block">
52                 <input type="text" id="url" name="url" required lay-verify="required" placeholder="请输入接口地址"
53                        autocomplete="off" class="layui-input">
54             </div>
55         </div>
56 
57         <div class="layui-form-item">
58             <label class="layui-form-label">文件路径</label>
59             <div class="layui-input-block">
60                 <input type="text" id="path" name="path" required lay-verify="required" placeholder="请输入报文所在的路径"
61                        autocomplete="off" class="layui-input">
62             </div>
63             <div class="layui-form-mid layui-word-aux">D:\\报文推送\\</div>
64         </div>
65 
66         <div class="layui-form-item">
67             <label class="layui-form-label">文件数量</label>
68             <div class="layui-input-inline">
69                 <input type="text" id="count" name="count" lay-verify="required" placeholder="请输入文件数量"
70                        autocomplete="off" class="layui-input">
71             </div>
72         </div>
73 
74         <div class="layui-form-item">
75             <label class="layui-form-label">推送间隔</label>
76             <div class="layui-input-inline">
77                 <input type="text" id="frequency" name="frequency" lay-verify="required" placeholder="报文请求频率"
78                        autocomplete="off" class="layui-input">
79             </div>
80             <div class="layui-form-mid layui-word-aux">(秒)</div>
81         </div>
82 
83 
84         <div class="layui-form-item">
85             <div class="layui-input-block">
86                 <button class="layui-btn" lay-submit lay-filter="formDemo" type="button" onclick="BtnBatchPacketPush();">
87                     立即提交
88                 </button>
89                 <button type="button" class="layui-btn layui-btn-primary">重置</button>
90 
91             </div>
92         </div>
93 
94 </div>
95 
96 </div>
97 
98 </body>
99 </html>

数据文件

 执行

 后端执行

原创文章,转载请说明出处,谢谢合作
原文地址:https://www.cnblogs.com/lwl80/p/15627080.html