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请求另一个服务器的更多相关文章

  1. js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据)

    js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据) 一.总结 1.ajax的浏览器的window对象的XMLHtmlRequest对象的两个重要方法:open(),se ...

  2. Linux从一个服务器拷贝文件到另一个服务器上

    ***复制文件夹到另外一个服务器scp -r tmp root@114.215.80.12:/work/temp输入密码 scp -r customer root@114.215.80.12:/hom ...

  3. php 请求另一个服务器接口返回数据

    <?php /** * Created by PhpStorm. * User: thinkpad * Date: 2015/7/17 0017 * Time: 13:24 */ class A ...

  4. Web服务器-HTTP相关-快速整一个服务器响应浏览器(3.2.1)

    @ 目录 1.HTTP分析 2.简单服务器 关于作者 1.HTTP分析 当你去访问一个网址的时候,浏览器会发送而各种头信息给服务器 然后服务器根据信息,返回一定数据的格式 最简单的就是下面的代码 自己 ...

  5. Gitblit从一个服务器,迁移到另外一个服务器

    http://gitblit.com/federation.html A Gitblit federation is a mechanism to clone repositories and kee ...

  6. CentOS 网络互通情况下把一个Linux服务器的文件发送到另一个服务器

    scp -r  文件名/目录名 root@192.168.2.144:/home/hsw -r   发送目录使用,表示把该目录下的所有子目录以及文件发送过去

  7. 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

    今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...

  8. 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

    原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET S ...

  9. ASP.NET MVC:无法向会话状态服务器发出会话状态请求

    ylbtech-Error-ASP.NET MVC: 无法向会话状态服务器发出会话状态请求 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET ...

  10. 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的

    我们在<服务器在管道中的"龙头"地位>中对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...

随机推荐

  1. 使用Kali Linux进行主机发现实验

    主机发现 [实训目的] 掌握主机扫描的工作原理,学会使用ping等扫描工具,发现网络当中活跃的主机. [场景描述] 在虚拟机环境下配置4个虚拟系统"Win XP1" "W ...

  2. Django + celery + redis 执行异步任务及查看结果

      官方文档 https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-wit ...

  3. ASP.NET Core+Vue3 实现SignalR通讯

    从ASP.NET Core 3.0版本开始,SignalR的Hub已经集成到了ASP.NET Core框架中.因此,在更高版本的ASP.NET Core中,不再需要单独引用Microsoft.AspN ...

  4. DDD技术方案落地实践

    1. 引言 从接触领域驱动设计的初学阶段,到实现一个旧系统改造到DDD模型,再到按DDD规范落地的3个的项目.对于领域驱动模型设计研发,从开始的各种疑惑到吸收各种先进的理念,目前在技术实施这一块已经基 ...

  5. 每天5分钟复习OpenStack(九)存储发展史

    上一章节我们介绍了使用本地硬盘做kvm的存储池,这章开始将介绍下存储的发展历程,并介绍什么是分布式存储,为什么HDFS为有中心节点的分布式存储? 1.存储发展 在单机计算时代(大型机.小型机.微机), ...

  6. JavaSript 数组

    添加数组 push是添加在数组的末位,unshift是添加在首位 let arr= ['a','b','c'] arr.push('d') arr.unshift('E')

  7. C#/.NET/.NET Core推荐学习书籍(已分类)

    前言 古人云:"书中自有黄金屋,书中自有颜如玉",说明了书籍的重要性.作为程序员,我们需要不断学习以提升自己的核心竞争力.以下是一些优秀的C#/.NET/.NET Core相关学习 ...

  8. 【题解】HD2016.X1,HD2016.X3,HD2016.X4,HD2016.X5

    [HD2016.X1] 价钱统计 题目描述 夏天到了,超市里摆满了各种各样的应季水果.现在知道:西瓜的价钱是每斤 1.2 元:桃子的价钱是每斤 3.5 元:葡萄的价钱是每斤 4.5 元:苹果的价钱是每 ...

  9. 在 Windows 系统上运行 VIC 水文模型

    目录 配置 WSL2 和 Ubuntu 系统 启用 WSL2 安装 Linux 发行版 配置 Ubuntu 安装 VIC 并测试 Stehekin 数据集 VIC 模型安装 samples 测试 VI ...

  10. Vite4+Typescript+Vue3+Pinia 从零搭建(4) - 代码规范

    项目代码同步至码云 weiz-vue3-template 要求代码规范,主要是为了提高多人协同和代码维护效率,结合到此项目,具体工作就是为项目配置 eslint 和 prettier. editorc ...