将一个服务器通过HTTP请求另一个服务器
1.一个服务器访问另一个服务器(不传参)
@RequestMapping ("/test")
public ResponseEntity<String> serverToServerRequest() {
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
// 设置目标服务器的URL
String targetUrl = "http://localhost:9172/file/test";
// 创建请求体
HttpEntity<String> requestEntity = new HttpEntity<>(null);
// 发送 POST 请求给目标服务器,并获取响应
ResponseEntity<String> response = restTemplate.postForEntity(targetUrl, requestEntity, String.class);
// 返回目标服务器的响应
return response;
}
2.一个服务器访问另一个服务器(传参)
@RequestMapping ("/test")
public ResponseEntity<String> serverToServerRequest() {
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
Integer a = 5;
// 设置目标服务器的URL
String targetUrl = "http://localhost:9172/file/test1?a="+a;
// 创建请求体
HttpEntity<String> requestEntity = new HttpEntity<>(null);
// 发送 POST 请求给目标服务器,并获取响应
ResponseEntity<String> response = restTemplate.postForEntity(targetUrl, requestEntity, String.class);
// 返回目标服务器的响应
return response;
}
3.一个服务器访问另一个服务器(传对象)
@RequestMapping ("/test2")
public ResponseEntity<String> serverToServerRequest2() {
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
ClassEntity classEntity = new ClassEntity();
classEntity.setClassName("这是一个测试");
System.out.println(classEntity);
// 设置目标服务器的URL
String targetUrl = "http://localhost:9172/file/test2";
// 创建请求体
HttpEntity<ClassEntity> requestEntity = new HttpEntity<>(classEntity);
// 发送 POST 请求给目标服务器,并获取响应
ResponseEntity<String> response = restTemplate.postForEntity(targetUrl, requestEntity, String.class);
// 返回目标服务器的响应
return response;
}
4.一个服务器访问另一个服务器(MultipartFile文件传输)
package com.dashan.controller; import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files; @RestController
@RequestMapping("test")
public class FileUploadController { @PostMapping("/upload")
public String uploadFile( MultipartFile file) throws IOException {
// 创建临时文件
File tempFile = File.createTempFile("temp-", "-" + file.getOriginalFilename()); try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(tempFile))) {
// 将接收到的文件内容写入临时文件
byte[] bytes = file.getBytes();
outputStream.write(bytes);
}catch (IOException e){
//处理异常
} // 将临时文件传输给另一个服务器的接口
// 这里可以使用 HttpClient、RestTemplate 或其他 HTTP 客户端工具发送文件
// 示例使用 RestTemplate
RestTemplate restTemplate = new RestTemplate();
String targetUrl = "http://localhost:9172/file/upload"; // 发送文件
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new FileSystemResource(tempFile)); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(targetUrl, HttpMethod.POST, requestEntity, String.class); // 删除临时文件
Files.deleteIfExists(tempFile.toPath());
System.out.println( responseEntity.getBody());
JsonObject jsonObject = JsonParser.parseString(responseEntity.getBody()).getAsJsonObject();
String fieldValue = jsonObject.get("data").getAsString();
System.out.println(fieldValue); return responseEntity.getBody();
}
}
在方法内部,首先创建一个临时文件,并将接收到的文件内容写入临时文件中。然后使用Java标准库中的HttpClient发送POST请求到另一个服务器的接口uploadUrl,将临时文件作为请求的内容。最后根据另一个服务器返回的响应码判断文件是否成功传输,并返回相应的响应给客户端。
将一个服务器通过HTTP请求另一个服务器的更多相关文章
- js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据)
js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据) 一.总结 1.ajax的浏览器的window对象的XMLHtmlRequest对象的两个重要方法:open(),se ...
- Linux从一个服务器拷贝文件到另一个服务器上
***复制文件夹到另外一个服务器scp -r tmp root@114.215.80.12:/work/temp输入密码 scp -r customer root@114.215.80.12:/hom ...
- php 请求另一个服务器接口返回数据
<?php /** * Created by PhpStorm. * User: thinkpad * Date: 2015/7/17 0017 * Time: 13:24 */ class A ...
- Web服务器-HTTP相关-快速整一个服务器响应浏览器(3.2.1)
@ 目录 1.HTTP分析 2.简单服务器 关于作者 1.HTTP分析 当你去访问一个网址的时候,浏览器会发送而各种头信息给服务器 然后服务器根据信息,返回一定数据的格式 最简单的就是下面的代码 自己 ...
- Gitblit从一个服务器,迁移到另外一个服务器
http://gitblit.com/federation.html A Gitblit federation is a mechanism to clone repositories and kee ...
- CentOS 网络互通情况下把一个Linux服务器的文件发送到另一个服务器
scp -r 文件名/目录名 root@192.168.2.144:/home/hsw -r 发送目录使用,表示把该目录下的所有子目录以及文件发送过去
- 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...
- 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET S ...
- ASP.NET MVC:无法向会话状态服务器发出会话状态请求
ylbtech-Error-ASP.NET MVC: 无法向会话状态服务器发出会话状态请求 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET ...
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
我们在<服务器在管道中的"龙头"地位>中对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...
随机推荐
- 下载、安装CAN-EYE植被参数工具
本文介绍植被指数计算软件CAN-EYE的下载.安装方法. CAN-EYE软件是由法国国家农业研究院(French National Institute of Agricultural Rese ...
- 一个vuepress配置问题,引发的js递归算法思考
前言 这两天在尝试用语雀+ vuepress + github 搭建个人博客. 小破站地址 :王天的 web 进阶之路 语雀作为编辑器,发布文档推送 github,再自动打包部署,大概流程如下. 问题 ...
- Chiplet解决芯片技术发展瓶颈
这是IC男奋斗史的第38篇原创 本文1776字,预计阅读4分钟. Chiplet封装是什么 介绍Chiplet前,先说下SOC.Chiplet和SOC是两个相互对立的概念,刚好可以用来互为参照. SO ...
- 网络层IP数据包
网络层 功能 选择数据通过网络(IP地址)的最佳路径 协议字段 版本号(4bit):指IP协议版本.并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100 十进制 是4 首部长度(4 ...
- 如何恢复win10/11音量条为默认样式?
保存为reg: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Curre ...
- AsyncOperation更好的实现大场景载入
说明:为了实现场景A->大场景B,可以让场景A->等待场景C->大场景B 知识点:AsyncOperation;AsyncOperation.allowSceneActivation ...
- 使用 Java 对比两个PDF文档之间的差异
不论是在团队写作还是在个人工作中,PDF 文档往往会经过多次修订和更新.掌握 PDF 文档内容的变化对于管理文档有极大的帮助.通过对比 PDF 文档,用户可以快速找出文档增加.删除和修改的内容,更好地 ...
- ArmSoM-W3应用开发之安装docker
1. 简介 RK3588从入门到精通系列专题 开发板:ArmSoM-W3 Kernel:5.10.160 OS:Debian11 本⽂介绍ArmSoM-W3在Debian11下如何安装使用docker ...
- 分享一个LCD驱动框架
首先需要说明的是本篇文章不是关于如何点亮一块LCD屏的教程,而是介绍一个LCD开发框架,更准确的说是介绍一个LCD的中间件(Middlwware),用来连接UI和不同类型的LCD屏.笔者本人的工作内容 ...
- Java八股面试题整理(1)
1.为什么Java代码可以实现一次编写,到处运行? 参考答案 JVM(Java虚拟机)是Java跨平台的关键. 在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class).在 ...