IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Java编写HTTP请求发送XML报文数据 -> 正文阅读

[网络协议]Java编写HTTP请求发送XML报文数据



测试背景:

现在有系统A和系统B,系统A使用HTTP请求向系统B发送报文数据,然后B系统接收到对应HTTP请求,并且对该请求中数据进行解析处理,最终返回与处理逻辑相对应的XML报文。

  • 这里的系统A可以抽象理解为客户端,系统B可以抽象理解为服务端
  • 这里的xml,可以抽象一下, 并不一定需要是真正的xml报文数据,Json同理。
  • 为方便后期改写,故demo中的系统A使用SpringBoot进行构建,系统B使用测试类进行构建。




1、编写系统A的服务端代码

注意:

  1. @Slf4j注解:使用了lombok插件和引入对应的maven依赖。你也可以直接使用System.out.println进行打印输出
  2. requestData:xml格式的报文数据,xml测试片段
  3. 代码逻辑分为两部分:处理接收到的数据;回写处理完的数据
@RequestMapping("/local")
@Controller
@Slf4j
public class LocalController {

	@RequestMapping("/local")
	public void testOtherClient(HttpServletRequest request, HttpServletResponse response) throws IOException {

		String unifiedCharset = "UTF-8";

		// 获取服务端接收的报文信息:
		// 1.获取输入流
		// 2.封装为一个BufferedReader
		// 3.读取数据写入Java缓存
		try (BufferedReader reader = new BufferedReader(
				new InputStreamReader(request.getInputStream()))) {
			String lines;
			StringBuffer sbf = new StringBuffer();
			while ((lines = reader.readLine()) != null) {
				lines = new String(lines.getBytes(), unifiedCharset);
				sbf.append(lines);
			}
			log.info("接收到的数据为 {}", sbf.toString());



			// 设置服务端的响应报文数据
			String resp = "<body>xml报文回复成功</body>";
			ServletOutputStream outputStream = response.getOutputStream();

			log.info("返回给客户端的报文为:" + resp);
			outputStream.write(resp.getBytes(unifiedCharset));
		} catch (RuntimeException e) {
			log.error(e.getMessage(), e);
		}
	}
}




2、编写系统B的服务端代码

注意:

  1. HttpURLConnection:这是Java自带的用于构建http请求的基础类,你也可以使用类似于HttpClient这样的工具类进行HTTP请求构建
@Slf4j
public class ClientHttp {


	public static void main(String[] args) {
		sendHttp();
	}

	public static void sendHttp() {
		log.info("第一部分:处理发送的数据========================================");

		String requestMethod = "POST";
		String requestContentType = "application/xml";
		String requestUrl = "http://127.0.0.1:8080/local/local";
		String requestData = "9999999999<head>这是一条xml测试报文</head>";
		String requestCharset = "UTF-8";

		log.info("发送给 {}的请求报文为 {}", requestUrl, requestData);
		try {
			URL url = new URL(requestUrl);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setDoInput(true);
			connection.setDoOutput(true);
			connection.setRequestMethod(requestMethod);
			connection.setUseCaches(false);
			connection.setInstanceFollowRedirects(true);
			connection.setRequestProperty("Content-Type", requestContentType);
			connection.connect();

			// 将发送的数据进行写入
			try (OutputStream os = connection.getOutputStream()) {
				os.write(requestData.getBytes(requestCharset));
			}

			log.info("第二部分:处理返回的数据========================================");
			// 获取服务端处理后的返回报文:
			// 1.获取输入流
			// 2.封装为一个BufferedReader
			// 3.读取数据写入Java缓存
			try (BufferedReader reader = new BufferedReader(
					new InputStreamReader(connection.getInputStream()))) {
				String lines;
				StringBuffer sbf = new StringBuffer();
				while ((lines = reader.readLine()) != null) {
					lines = new String(lines.getBytes(), requestCharset);
					sbf.append(lines);
				}
				log.info("接收到服务端返回的数据为:{}", sbf.toString());
			}
			connection.disconnect();

		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
	}
}




3、测试结果

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:30:49  更:2022-03-21 21:30:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:41:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码