Java基础—实现微服务模块接收Http请求回调数据

简介: 本文中详细介绍在微服务模块中实现接收公网Http请求数据回调接口说明。

壹、涉及微服务结构相关的知识点

从零搭建微服务SpringCloud(二)新建一个SpringCloud项目

贰、实现代码

1、导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.49</version>
</dependency>

2、resources目录创建application.yml文件

image.png

#自定义端口号
server:
  port: 7000
#自定义服务注册名
spring:
  application:
    name: HTTP-SERVICE

3、搭建启动类

image.png

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HttpServiceRequestStart {
    public static void main(String[] args) {
        SpringApplication.run(HttpServiceRequestStart.class,args);
    }
}

4、创建服务类

image.png

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class HttpServiceRequestService {
    private Logger logger = LoggerFactory.getLogger(HttpServiceRequestService.class);
    public void saveNotify(String reqBody){
        logger.info("reqBody="+reqBody);
        com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);
        System.out.println(resObj);
    }
}

5、搭建控制层

image.png

import com.cloud.start.com.service.HttpServiceRequestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;

@RestController
@CrossOrigin
@RequestMapping(value = "/first", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class HttpServiceRequestController {
    @Autowired
    private HttpServiceRequestService httpServiceRequestService;
    @RequestMapping(value = "/request" ,method = RequestMethod.POST)
    public String one(HttpServletRequest result){
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(result.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while((line = br.readLine())!=null){
                sb.append(line);
            }
            String reqBody = sb.toString();
            httpServiceRequestService.saveNotify(reqBody);
        }catch (Exception e){
            e.printStackTrace();
        }
        return "success";
    }
}

叁、参数详解

1、服务层详解

在服务层中,有代码为

com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);

我们进入JSONObject.parseObject(reqBody);的parseObject(String text)中看一下

image.png

如上图,第一行为Object obj = parse(text);
继续进入到parse方法

image.png

我们发现,parse方法是用来将String类型转为JSON类型

回到parseObject(String text)

如图,如果obj是JSONObject创建的对象,那么直接将obj强转为JSONObject对象并返回
image.png

如果不是JSONObject创建的对象,则将obj转为JSON后强转为JSONObject对象并返回,如果无法转换,则抛出新异常“can not cast to JSONObject”,无法转换为 JSON 对象。
image.png

2、控制层详解

@RequestMapping(value = "/first", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
MediaType参数介绍

目录
相关文章
|
11月前
|
NoSQL MongoDB 微服务
微服务——MongoDB实战演练——文章微服务模块搭建
本节介绍文章微服务模块的搭建过程,主要包括以下步骤:(1)创建项目工程 *article*,并在 *pom.xml* 中引入依赖;(2)配置 *application.yml* 文件;(3)创建启动类 *cn.itcast.article.ArticleApplication*;(4)启动项目,确保控制台无错误提示。通过以上步骤,完成文章微服务模块的基础构建与验证。
166 0
|
10月前
|
存储 C++
UE5 C++:自定义Http节点获取Header数据
综上,通过为UE5创建一个自定义HTTP请求类并覆盖GetResult方法,就能成功地从HTTP响应的Header数据中提取信息。在项目中使用自定义类,不仅可以方便地访问响应头数据,也可随时使用这些信息。希望这种方法可以为你的开发过程带来便利和效益。
380 35
|
7月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
518 0
|
9月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
863 20
|
9月前
|
存储 数据库 Python
使用HTTP POST协议将本地压缩数据发送到服务器
总的来说,使用HTTP POST协议将本地压缩数据发送到服务器是一个涉及多个步骤的过程,包括创建压缩文件,设置HTTP客户端,发送POST请求,以及服务器端的处理。虽然这个过程可能看起来复杂,但一旦你理解了每个步骤,就会变得相对简单。
329 19
|
10月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
292 22
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
294 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
434 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
消息中间件 测试技术
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
轻量消息队列(原MNS)以其简单队列模型、轻量化协议及按量后付费模式,成为阿里云产品间消息传输首选。本文通过创建主题、订阅、配置告警集成等步骤,展示了该产品在实际应用中的部分功能,确保消息的可靠传输。
294 2
|
安全 API 网络安全
使用OkHttp进行HTTPS请求的Kotlin实现
使用OkHttp进行HTTPS请求的Kotlin实现