将一个服务器通过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进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...
随机推荐
- ModuleNotFoundError: No module named 'qrcode'
W File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", ...
- 采用ResNet网络+TSNE降维算法对自建图像数据集进行二维可视化显示
起因:某一天下午,我在"玩"的时候,突然接到了老板的电话,说是要对图像做可视化降维.因此,我拿到了一批图像的数据. 数据的特点: 1.数据集的图像分为4类,并且每一种类的图像多少不 ...
- 【前端小技巧】如何使用 Eolink Apilkit 调用 Mock ?
在开发过程中,进度比较赶的情况下,前端人员当页面写完时,后台的接口还没写完,等要交付的时候后端才把接口给你,这个时候就很尴尬. 这个时候 Mock 就可以很好的解决这个问题,前端团队可以在 API 还 ...
- 使用 OpenTelemetry 构建 .NET 应用可观测性(4):ASP.NET Core 应用中集成 OTel
目录 前言 使用 elastic 构建可观测性平台 在 ASP.NET Core 应用中集成 OTel SDK 安装依赖 基础配置 Instrumentation 配置 创建自定义 Span 和 Me ...
- Vue之基础事件
1.基础事件,先弹框试试 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 2022/7/26 暑期集训 pj组第6次%你赛
个人第3次 又是下午打,旁边那帮 不知好歹的 入门组小孩们又在吵吵... T1 老师是不是放反了? T1 是蓝题诶 理所应当地 跳过 然后就忘了写了,连样例也没打...样例可是有7分诶! 到现在也没写 ...
- springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
一.SpringCloud 简介 Spring Cloud 是一系列框架的有序集合如服务发现注册.配置中心.消息总线.负载均衡.熔断器.数据监控等. SpringCloud 将多个服务框架组合起来,通 ...
- QSplitter 自我总结
①.QSplitter(QWidget* parent = Q_NULLPTR); //构造函数 QSplitter(Qt::Orientation orientation , QWidget* pa ...
- 一文讲透DevOps理论体系的演进
一.前言 当前,我国处于以信息化.数字化.网络化.智能化为特征的科技变革浪潮中,企业数字化转型大势所趋,那么作为支撑企业IT运转的运营体系也在向多元方向发展,比如DevOps(研发运营一体化).AIO ...
- python之字符串format()方法
format()方法就是格式化指定的值,然后再将其插入字符串的占位符内 占位符用大括号{}来定义哈,可以使用命名索引{sws}.编号索引{0}.甚至空的占位符{}来标识占位符. 语法就是 string ...