Java发送Http请求之——文件的发送

Java 实现 HTTP 请求的四种方式,你都学会了么? 在日常工作和学习中,有很多地方都需要发送HTTP请求,本文以Java为例,总结发送HTTP请求的多种方式HTTP请求实现过程GET创建远程连接设置连接方式(get、post、put…)设置连接超时时间设置响应读取时间发起请求获取请求数据关闭连接POST创建远程连接设置连接方式(get、post、put。。。设置连接超时时间设置响应读取时间当向远程服务器传送数据/写数据时,需要设置为当前向远程服务读取数据时,设置为true,该参数可有可无(setDoInput设置传入参数的格式:( 阅读详情

1.POM依赖

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.2</version>
        </dependency>

2.发送文件请求工具类

package com.example.demo.util;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class HttpUtil {

    public static String sendFileReq(String url, MultipartEntityBuilder multipartEntityBuilder, String encoding) throws IOException {
        String body = "";

        //创建httpclient对象
        CloseableHttpClient client = HttpClients.createDefault();
        //创建post方式请求对象
        HttpPost httpPost = new HttpPost (url);

        //设置请求参数
        HttpEntity httpEntity = multipartEntityBuilder.build();

        httpPost.setEntity(httpEntity);

        //执行请求操作,并拿到结果(同步阻塞)
        CloseableHttpResponse response = client.execute(httpPost);
        //获取结果实体
        HttpEntity entity = response.getEntity();
        if (entity != null) {
            //按指定编码转换结果实体为String类型
            body = EntityUtils.toString(entity, encoding);
        }
        EntityUtils.consume(entity);
        //释放链接
        response.close();
        return body;
    }

    public static void main(String[] args) {
        String url = "http://localhost:8080/receivePostReq";

        File attach_file = new File("D:/1/a.png");

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.setContentType(ContentType.MULTIPART_FORM_DATA);

        builder.addBinaryBody("attach_file",attach_file);

//        ContentType contentType = ContentType.create("text/plain","utf-8");
        ContentType contentType = ContentType.create(ContentType.TEXT_PLAIN.getMimeType(), StandardCharsets.UTF_8);
        StringBody stringBody = new StringBody("发送文件",contentType);

        builder.addPart("userName",stringBody);
        try {
            String result1 = sendFileReq (url, builder, "utf-8");
            System.out.println (result1);

        } catch (Exception e) {
            e.printStackTrace ( );
        }
    }

}

3.验证测试接口

package com.example.demo.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.Calendar;

@RestController
public class DemoController {

    @PostMapping("/receivePostReq")
    public String receivePostReq(
            @RequestParam(value = "userName") String userName,
            @RequestParam(value = "attach_file") MultipartFile[] attach_file,
            HttpServletRequest request
    ){
        System.out.println("userName="+userName);

        //这里file可以接受前台的文件,可以是一个,也可以是多个,这正是MultipartFile强大的地方。
        String filePath = "D:\\1";
        String fileName[]=new String[attach_file.length];

        if (attach_file != null && attach_file.length > 0) {
            //判断使用有文件上传
            for (int i = 0; i < attach_file.length; i++) {
                //循环上传(多文件上传)
                try {
                    Calendar cale = null;
                    cale = Calendar.getInstance();
                    int year = cale.get(Calendar.YEAR);	int month = cale.get(Calendar.MONTH) + 1;
                    int day = cale.get(Calendar.DATE);
                    //给图片重命名加上日期前缀
//                    filePath= request.getSession().getServletContext().getRealPath("/") ;
                    //获取服务器img文件夹地址(这里指的是local:8080/项目名/img)
                    fileName[i]= "/img/" + year + ""+ month + "" + day + "_" + attach_file[i].getOriginalFilename();
                    //重命名图片。
                    String type = fileName[i].substring(fileName[i].lastIndexOf(".")+1, fileName[i].length());
                    //截取文件后缀判断是否是一张图片
                    if((type.equals("png"))||(type.equals("jpg"))||(type.equals("jpeg"))){
                        int length = attach_file[i].getBytes().length;
                        if (!((length / 1000) > 5120)) {
                            //判断图片地址
                            System.out.println("图片"+i+"="+fileName[i]);
                            //将图片输出到制定的文件夹目录中
                            attach_file[i].transferTo(new File(filePath,fileName[i]));
                        }else{
                            System.out.println("图片过大");
                        }
                    }else{
                        System.out.println("只能上传图片啊亲!");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("上传失败");
                }
            }
        } else {
            System.out.println("请选择文件");
        }

        return "请求成功";
    }

}

4.总结

以上,Java后台发送文件,接收文件就完成了。

文件保存参考

数据传输中文乱码解决参考

Monocle2在R 4.3环境下的终极避坑指南:从安装到可视化全流程解析 本文提供了在R 4.3环境下安装和运行Monocle2的完整解决方案,重点解决了依赖包兼容性、源码修改及BEAM分析报错等关键问题。文章详细解析了从环境准备、依赖包处理、源码安装验证到从Seurat对象转换、拟时轨迹构建、高级可视化及性能优化的全流程,旨在帮助用户顺利完成单细胞拟时分析。 阅读详情

相关推荐

如何加载交易策略EA到MT4/MT5

1、打开MT4/MT5软件 2、首先,必须有一个EA,而且必须是mq4/ex4为扩展名。点击左上角“文件”—“打开数据文件夹”,找到安装路径 3、将EA的ex4或mq4文件放到MT4目录\MQL4\Experts里面(本文以名为Demo的EA为例) 4、如果有DLL库文件,复制到experts目录下的libraries子目录中 5、如果有tpl模板文件,复制到templates目录中 6、添加完成后重启MT4,点击允许EA运行图标 7、在导航中找到刚才安装的EA,拖拽到...

weixin_41364817的博客 7362

NoClassDefFoundError: org.apache.http.entity.mime.content.StringBody

1.出错代码:StringBody strbType = new StringBody("123" , Charset.forName("UTF-8")); 2.问题描述:编译期间没问题,运行后报异常“NoClassDefFoundError: org.apache.http.entity.mime.content.StringBody” 3.问题原因:如下图,libs1中的包编译时都OK

berber78的专栏 1万+

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 792

httpcliet发送body体_使用httpclient发送get或post请求

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。当前官网最新版介绍页是:http://hc.apache.org/httpcomponents-client-4.5.x/index.html许多模拟http请求的框架都用httpclient,测...

weixin_29214335的博客 3045

用《Flappy Bird》游戏带你搞懂强化学习:从Q-learning到DQN的保姆级实战

本文通过《Flappy Bird》游戏实战,详细讲解了从Q-learning到DQN的强化学习技术。从环境搭建、Q表格构建到深度Q网络(DQN)的实现,逐步展示如何训练AI自主玩游戏。文章包含代码示例、训练技巧和性能优化方法,帮助读者深入理解强化学习的核心概念和应用。

weixin_42526415的博客 347

大众奥迪诊断不求人:手把手解析SAE J2819(CAN TP2.0)协议报文与连接流程

本文深入解析大众奥迪车型诊断核心标准SAE J2819(CAN TP2.0)协议,详细拆解连接建立流程与报文控制字段。通过实战案例展示通道设置、参数协商等关键步骤,提供诊断设备配置建议和常见故障排查技巧,帮助工程师掌握汽车诊断通信协议的精髓。

weixin_30421809的博客 398

HTTP POST 发送File 并设置请求头

package com.simpro.util; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStre...

时光与召的博客 4880

Allegro层叠中的介电常数如何填写指导说明

在用Allegro进行PCB设计的时候,需要在cross-section中设置好每个层的信息,包括层命名,每层的厚度等等信息。但是对于有仿真需求或者等长设计需要使用ps作为延时单位的设计的时候,需要额外在层叠中填写介电常数的值,如下图。按照经验值填写为2.8,因为外层和平面层不会被树脂填充,铜皮层还是完整的铜皮,如下图。对应层叠将每层介质的介电常数的数值填入到PCB中去,油墨的介电常数填4。层叠中只给出了每个介质的介电常数,铜皮的介电常数却没有给出。所以正确填写介电常数的结果如下图。需要按照下面的规则来。

weixin_54787054的博客 1394

java后端调用第三方接口,(往header和body中的参数传参)

最近被分配干大华摄像头,需要调用第三方接口。java如何调用对方http接口(header和body中的参数传参) 之前调用的钉钉第三方接口都是普通传参,很简单。这次是往请求头和请求体里面传参,做一下记录。 //从配置文件中读取路径 可以写死 "http://。。。。。。。" String serverURL = "https://www.cloud-dahua/liveList"; StringBuffer sbf = new StringBuffer();

GQ_666的博客 1万+

《网络摄像机实战⑦:嵌入式端AWS KVS IoT SDK 库编译与测试全流程-君正/瑞芯微/全志(超详细指南)》

本文介绍了AWS音视频和物联网解决方案的核心组件与集成方法。主要内容包括:1)Amazon Kinesis Video Streams(KVS)提供的WebRTC托管服务,支持实时音视频流传输与双向交互;2)AWS IoT云服务实现设备连接与集成;3)详细说明了KVS WebRTC库的编译过程,包括源代码下载、CMake配置和依赖库生成;4)KVS Producer库的集成方法,重点阐述了存储空间调整和mbedtls版本适配等关键修改点。文章为开发者提供了AWS音视频和物联网服务的技术实现指南,特别针对嵌入

lvj_158的专栏 109

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3976

java 发送 http 请求 , 发送文件 或者 json 数据

java 发送 http 无参 get 请求 java 发送 http 文件 post java 发送 http json 参数 Post请求 java 发送 http 无参 get 请求 //url 为 http 地址 public static String doGet(String url) { CloseableHttpClient httpClient = null; CloseableHttpResponse response = null; String result

我的博客 2865

OpenClaw 生成测试用例

OpenClaw 只是躯干,Skills 才是灵魂。很多同学觉得 OpenClaw 没用,就像是买了一台顶级电脑却没装操作系统。通过这四步走,不仅可以学会如何让 AI 干活,更重要的是,可以学会如何管理 AI 的能力。

十二测试录 738

Java 发送http请求,上传文件

Java 发送http请求,post 上传文件

阿文丶的专栏 6868

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java模拟http请求,通过流的方式发送数据,模拟接收流文件和json数据

项目里碰到过模拟ajax请求的案例,研究了一下,觉得 httpClient 是真心好用,由于模拟环境搞了大半天,httpclient就另外再写博文吧 下面的例子介绍流的方式发送和接收,这个就有点暴力了,想传啥都行:以字节流的方式发送数据(可以是任何数据) 看标题就知道了,简单粗暴的方法,管他什么格式,统统“流”过去,不过既然是模拟的,要配置好其他参数,对方才能正常接收到 发送方: ...

akxj2022的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

http 上传文件java_Java 发送http请求上传文件功能实例

废话不多说了,直接给大家贴代码了,具体代码如下所示:package wxapi.wxhelper;import java.io.bufferedreader;import java.io.datainputstream;import java.io.dataoutputstream;import java.io.file;import java.io.fileinputstream;import ...

weixin_35615495的博客 668

java http 上传_Java 发送http请求上传文件功能实例

package wxapi.WxHelper;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import...

weixin_34308792的博客 308

如何通过java代码发送文件-表单形式http请求

1、引入包 2、文件表单请求 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/

qq_43370419的博客 651

java 转发上传文件_Java 发送http请求上传文件功能实例

废话不多说了,直接给大家贴代码了,具体代码如下所示:package wxapi.WxHelper;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import ...

weixin_42313675的博客 352

HttpClient的使用,java代码发送http请求文件

[code="java"] //java代码发http请求 public void sendHttpRequest(String selfIpPort, String filePath) throws Exception{ List ipPortList = customerLoginService.queryIpPortList(selfIpPort); for (Ite...

我的java 479

java 发送上传文件的 http put 请求

public static CloseableHttpResponse putFilesWithHeader(String url,JSONObject requestJson,Map<String, String> header ,File... files) { CloseableHttpResponse execute = null; HttpPut http...

For_That的博客 5248

java 发送http get post 请求,以及java通过httpclient中转上传文件

java 发送http get post 请求,以及java通过httpclient中转上传文件package com.websocket.common.http.util; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java....

-韧-的博客 1312

java http 流_java 模拟http请求,通过流(stream)的方式,发送json数据和文件

发送端:/*** 以流的方式* 发送文件和json对象** @return*/public static String doPostFileStreamAndJsonObj(String url, List fileList, JSONObject json) {String result = "";//请求返回参数String jsonString = json.toJSONString();/...

weixin_35710158的博客 1907

java读取上传的zipentity_发送http请求,获取返回的zip包并读取包内的文件

需要引入jar包:httpclient、httpmime、httpcore、javax.servlet-api。import javax.servlet.http.HttpServletResponse;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.Outpu...

weixin_30587271的博客 850

java http 上传文件_Java 发送http请求上传文件功能案例

Java 发送http请求上传文件功能案例如何使用Java做一个http请求上传文件的功能呢?下面是由百分网小编为大家整理的Java 发送http请求上传文件功能案例,喜欢的可以收藏一下!了解更多详情资讯,请关注应届毕业生考试网!具体代码如下所示:package wxapi.WxHelper;import java.io.BufferedReader;import java.io.DataInpu...

weixin_30679547的博客 1093

java服务端模拟HTTP发送表单请求,包括上传文件及其他参数

java服务端模拟HTTP发送表单请求,包括上传文件及其他参数,可自定义参数信息

可爱的程序yuan 2567

[Java]HTTPS/HTTP工具类_发送请求(GET,POST,PUT,DELETE以及发送文件方法)

HTTPS/HTTP工具类

88_Rising 1678
上一篇: Java发送Http请求之——发送Post请求
下一篇: Java发送Http请求之——发送Get请求
红姬茄子
博客等级 码龄16年 8238粉丝 55原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值