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. nfls10.1

    T1 大水题,用位运算更加便捷求解. T2 看出来有环了,但是没往基环树上想,寄. 暴力分,有部分分是基础树,可以跑一遍深搜,根节点的选择是 k 种颜色,剩下的是 k - 1 种颜色.还有暴力是可以二 ...

  2. java算法之排序算法大全

    ①排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方 ...

  3. Unity - UIWidgets 3. 页面跳转

    Flutter的Route概念, 移动开发常指Page, 在android中指activity, ios中指viewcontroller, UGUI中常称为Panel\Form\View? 大概说的就 ...

  4. c#中适配器模式详解

    基础介绍:   想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的.   想要实现要么就是改原有接口,但这样就违反了开闭原则,容 ...

  5. 对于goland相对较新一些版本新建项目时没有go mod模式选项的坑

    前言 对于一些小白在网上看很早的一些go视频,使用goland2020.3.x版本或者其之前版本创建新项目,里面会有GO Modules(vgo)这个选项,也就是gomod模式创建新项目,然而对于现在 ...

  6. Gitlab集成jenkins及docker自动化部署教程

    Gitlab集成jenkins及docker自动化部署教程 能实现提交代码到gitlab后,我们只需要合并代码到指定分支就可以上Jenkins自动拉取最新代码并重新构建部署 1.登录Jenkins点击 ...

  7. 【pwn】[SDCTF 2022]Horoscope--栈溢出,atoi函数绕过

    checksec检查一下,发现只开了nx,然后ida打开直接看主函数 发现fgets函数往s里面读入320个字节的数据,此处可造成溢出,再看看test和debug函数 void debug(){  t ...

  8. Spring5学习随笔-Spring5的基本介绍、工厂设计模式

    学习视频:[孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索.学不会Spring?只因你未遇见孙哥] Spring系列-工厂 第一章.引言 Spring I ...

  9. JuiceFS 用户必备的 6 个技巧

    随着大数据.AI 技术的发展,越来越多的企业.团队和个人开始使用 JuiceFS,本文整理了 6 个超实用的 JuiceFS 技巧,帮助大家提升 JuiceFS 的管理效率. 一.查看已挂载的文件系统 ...

  10. LabVIEW基于机器视觉的实验室设备管理系统(4)

    目录 行动计划 后面板连线 初始化 ​返回 ​ 注册 账号限制 查重账号或者姓名 确认密码 注册 效果演示 我们上一期制作完了给账户修改密码,那么我们这一期就来完成账户注册这一功能.老规矩哦,先来计划 ...