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. 基于 Canal 设计可扩展、高可用 binlog 同步集群

    问题 https://github.com/alibaba/canal binlog 同步组件,canal 使用是比较广泛的,canal 逻辑架构如图: 部署架构如图: canal 基于主从模式,任务 ...

  2. docker本地仓库-registry

    Docker本地私有仓库实战: docker仓库主要用于存放docker镜像,docker仓库分为公有仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下: 节省网络带宽, ...

  3. PolygonCollider2D.OverlapPoint()在小scale下失效的一种解决办法

    偶然发现PolygonCollider2D的方法OverlapPoint()有时会失效(一直返回false),测试后发现在scale(这里指世界空间的scale,后同)很小的情况下(通常在UI Can ...

  4. YXの每日挂分记录

    7.11 T1 不开两倍数组 100->60. 7.18 T2 dp+矩乘 转移不判边界 100->10. 7.20 T2 人类智慧 1e6 n log n 100->10,求前 5 ...

  5. 文心一言 VS 讯飞星火 VS chatgpt (124)-- 算法导论10.5 5题

    五.用go语言,给定一个n结点的二叉树,写出一个 O(n)时间的非递归过程,将该树每个结点的关键字输出.要求除该树本身的存储空间外只能使用固定量的额外存储空间,且在过程中不得修改该树,即使是暂时的修改 ...

  6. Python 数学函数和 math 模块指南

    Python 提供了一组内置的数学函数,包括一个广泛的数学模块,可以让您对数字执行数学任务. 内置数学函数.min() 和 max() 函数可用于在可迭代对象中查找最低或最高值: 示例:查找可迭代对象 ...

  7. influxdb报错:cache-max-memory-size exceeded

    转载请注明出处: influxdb报错日志: 该错误信息表示 InfluxDB 引擎超过了缓存最大内存大小.这意味着 InfluxDB 的缓存使用量超出了配置的限制. 要解决此问题,可以采取以下步骤来 ...

  8. 淘天Java一面,难度适中!(上篇)

    1.公司介绍 淘天集团是阿里巴巴集团全资拥有的业务集团,全球领先的科技商业公司. 淘天集团以淘宝 APP 为主要服务载体,构建国内国际供给.线上线下场景.远场近场履约相结合的商业矩阵,汇聚数十万全球和 ...

  9. (Good topic)哈希表:拼写单词 (3.17 leetcode每日打卡)

    给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars. 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌 ...

  10. 最小生成树(Kruskal Prim)

    最小生成树 (克鲁斯卡尔算法) Kruskal 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数. 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible. 给 ...