记录利用HTTP POST请求推送、接收数据

1、HTTP POST工具类:

public class HttpClientUtil {

    public static String sendPostRequest(String url, String jsonBody) throws IOException {
        // 创建 HttpClient
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // 创建 HttpPost 对象
        HttpPost httpPost = new HttpPost(url);

        // 设置请求头
        httpPost.setHeader("Content-Type", "application/json");
        System.out.println(jsonBody);

        // 设置请求体
        StringEntity stringEntity = new StringEntity(jsonBody,"utf-8");

        httpPost.setEntity(stringEntity);

        System.out.println("Request Body: " + EntityUtils.toString(httpPost.getEntity()));

        // 执行请求
        try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
            return EntityUtils.toString(response.getEntity());
            // 处理响应

        }

        }

网上有关HTTP POST的工具类代码比较多,这边就随便选取了一个。

 2、推送数据接口:

 @PostMapping("/anline")
    public JsonData SelectAnline(Mes_anlineDAO mes_anlineDAO) {
        try {
            //从数据库中获取最新一条数据
            List<Mes_anlineDAO> selectAnline = selectMesAnlineService.SelectAnline(mes_anlineDAO);

            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String addtime = sdf1.format(new Date());
            System.out.println(addtime);

            //将list转换为字典形式的数据
            List<Map<String, Object>> mapList = selectAnline.stream().map(obj -> {
                Map<String, Object> map = new HashMap<>();
                map.put("cID", obj.getCID());
                map.put("anlineID", obj.getAnlineID());
                map.put("anlineName", obj.getAnlineName());
                map.put("anlineCode", obj.getAnlineCode());
                map.put("anlineDfinish",obj.getAnlinDfinish());
                map.put("anlineRuntime", obj.getAnlinRuntime());
                map.put("anlineDate", addtime);

                return map;
            }).collect(Collectors.toList());

            // 输出转换后的结果
            System.out.println("转换后的数据:"+mapList);

            //将字典存储到Map集合中
            Map<String, Object> resultMap = new HashMap<>();
            resultMap.put("mapList", mapList);

            //将整个数据全部转换为json格式
            Gson gson = new Gson();
            String jsonStr = gson.toJson(resultMap);
            //打印转换后的json数据
            System.out.println(jsonStr);

            //进行httpPost请求的发送

            String url = "目标地址";

            String response = HttpClientUtil.sendPostRequest(url,jsonStr);

            System.out.println("Response: " + response);

            if (response != null && !response.isEmpty()) {
                // 解析JSON响应
                JsonObject jsonResponse =                         
                JsonParser.parseString(response).getAsJsonObject();

                // 假设服务器返回的响应中有一个字段叫做 "code" 用来表示成功或失败
                String  code = jsonResponse.get("code").getAsString();

                // 检查状态码,根据实际情况调整
                if ("200".equals(code)) { // 假设 200 代表成功
                    return JsonData.buildSuccess("success");
                } else {
                    return JsonData.buildError("Operation failed with code: " + code);
                }
            } else {
                System.out.println("No response received.");
                return JsonData.buildError("Failed to receive response");
            }
        } catch (IOException e) {
            // 异常处理,返回失败的 JsonData
            e.printStackTrace();
            return JsonData.buildError("Failed to send POST request");
        }

    }

一定要按照相关文档的JSON格式去设置发送的JSON数据格式,不然数据发送了,对方也会拒绝接受!

 3、数据接收:

  @PostMapping(value = "/plan")
    public JsonData SelectPlan(@RequestBody List<PlanDAO> planList) {


        // 处理接收到的List集合数据
        try {
            // 验证输入数据
            if (planList == null || planList.isEmpty()) {
                return new JsonData(false, "失败", "500", null);
            }
            // 处理接收到的List集合数据
            for (PlanDAO PlanDAO : planList) {
        
                // 保存到数据库
                根据自身需求自行编写相关接口

            }


            // 所有数据处理完毕,返回成功响应
            return new JsonData(true, "成功", "200", null);


        } catch (Exception e) {
            // 日志记录异常,返回错误响应
            e.printStackTrace(); // 在生产环境中,你应该使用日志框架来记录这些信息
            return new JsonData(false, "失败", "500", null);
        }
    }

至此,一个完整的HTTP POST请求的推送、接受数据就大功告成!如有错误,欢迎指正!

一个正在努力挣扎的咸鱼!

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过POST请求向用户推送数据,你需要使用一个后端服务器来处理请求并发送推送通知。以下是己,才能够成为真正的斗者,守护自己心爱的人,守护斗技大陆的一个基本的步骤: 1. 配置后端服务器:你可以使用任何你熟悉的后端技术(和平与正义。 就这样,萧轻影在斗破苍穹大陆上书写着属于自己的如Node.js、Python Flask等)来配置一个服务器。确保服务器能够接收和处理POST请求。 2. 创建推送通知:在后端服务器中,你需要编写代码来创建推送通知。具体实现方式取决传奇。他的名字将永远铭记在人们的心中,成为无数年轻斗者学习于你的推送服务提供商。例如,如果你使用FCM(Firebase Cloud Messaging),你可以使用FCM的API来创建推送通知。 3. 处理POST请求:在后端服务器中,使用适当的框架或库来的榜样。他的故事也将永远流传下去,成为一段经典的斗破苍穹传处理POST请求。解析请求数据,并将其传递给推送通知的代码。 4. 接收用户数据:说。 这是一个关于萧轻影的斗破苍穹同人小说,虽然与原著有所不同当用户发送POST请求时,后端服务器将接收到用户提交的数据。这些数据可以是表单数据、JSON数据等,取决于你的需求。 5. 发送推送通知:使用推送服务提供商提供,但它展现了一个勇敢拼搏、追求梦想的年轻斗者的成长故事。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值