调用hutool包调用http接口处理文件流-文件的上传下载工具类

这篇具有很好参考价值的文章主要介绍了调用hutool包调用http接口处理文件流-文件的上传下载工具类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hutool工具类get请求获取流:
InputStream inputStream = HttpRequest.get(fileUrl).execute().bodyStream();

hutool工具类post请求上传文件流:
String resp = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.MULTIPART.getValue()).form(params).execute().body();

完成代码文章来源地址https://www.toymoban.com/news/detail-799169.html



import cn.hutool.core.io.resource.InputStreamResource;
import cn.hutool.http.ContentType;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;

import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.*;

import java.io.IOException;

@Slf4j
@Service
public class HttpUtils {


    public int SUCCESS_CODE = 200;
    public int FILED_CODE = 500;


    public static String getCurrentToken() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getRequest();
//        String token = request.getHeader("token");
        LoginUserBO principal = (LoginUserBO) SecurityUtils.getAuthentication().getPrincipal();
        String token = principal.getToken();
        return token;
    }


    /**
     * 有参POST请求
     */
    public <T> String doPostTestByParam(String url, T t) {

        // 请求地址
//        String url = "http://localhost:8889/consumer/post";
        // post请求
        HttpClient httpClient = null;
        HttpPost postMethod = null;
        HttpResponse response = null;
        String responseContent = null;
        try {
            // 获取http客户端
            httpClient = HttpClients.createDefault();
            postMethod = new HttpPost(url);
            // 自定义对象
//            User user = new User();
            // 设置请求头
            postMethod.addHeader("Content-Type", "application/json;charset=utf8");
            // 封装请求体
            postMethod
                    .setEntity(new StringEntity(JSON.toJSONString(t), Charset.forName("UTF-8")));
            // 发送请求
            response = httpClient.execute(postMethod);
            // 获取响应结果
            int statusCode = response.getStatusLine().getStatusCode();
            // 响应对象
            HttpEntity httpEntity = response.getEntity();
            // 响应的字符串
            responseContent = EntityUtils.toString(httpEntity, "UTF-8");
            //释放资源
            EntityUtils.consume(httpEntity);
            return responseContent;
        } catch (IOException e) {
            log.info("请求异常, 错误信息为: {} ", e.getMessage());
            return null;
        }
    }


    /**
     * 有参GET请求 添加请求配置
     * params.add(new BasicNameValuePair("key", "123456"));
     * params.add(new BasicNameValuePair("id", "123123"));
     * List<NameValuePair> params = new ArrayList<>();
     */
    public static HttpResponse doGetTestByURI(List<NameValuePair> params, String scheme, String host, int port, String path) {
//        String url = "http://localhost:8889/consumer/get";
//        String currentToken = getCurrentToken();
        //  获取httpClient客户端
        HttpClient httpClient = HttpClientBuilder.create().build();
        //  发送请求
        HttpResponse httpResponse = null;
        URI uri = null;
        try {
            uri = new URIBuilder()
                    .setScheme(scheme)
                    .setHost(host)
                    .setPort(port)
                    .setPath(path)
                    .setParameters(params)
                    .build();
            //  创建Post请求
            HttpGet httpPost = new HttpGet(uri);
//            httpPost.setHeader("Authorization", "Bearer " + currentToken);
            httpResponse = httpClient.execute(httpPost);

            // 配置请求信息
            RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectTimeout(5000) // 连接超时时间
                    .setConnectionRequestTimeout(5000) //请求超时时间
                    .setSocketTimeout(5000) // 读写超时时间
                    .setRedirectsEnabled(true) // 是否重定向 默认true开启
                    .build();
            httpPost.setConfig(requestConfig);

            // 4 响应状态码 响应信息
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            log.info("响应状态码为: {} ", statusCode);

            // 响应信息
            HttpEntity httpEntity = httpResponse.getEntity();
            log.info("响应内容为: {} ", EntityUtils.toString(httpEntity));

            //释放资源
            EntityUtils.consume(httpEntity);
            return httpResponse;
        } catch (Exception e) {
            log.info("请求异常, 错误信息为: {} ", e.getMessage());
            return httpResponse;
        }

    }


    /**
     * 上传文件服务器
     *
     * @param file
     * @return
     */
    public JSONArray upLoadFileService(MultipartFile file, String url) {
        Map<String, Object> params = new HashMap<>();
        JSONArray jsonArray = new JSONArray();
        params.put("files", createIs(file));
        String resp = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.MULTIPART.getValue()).form(params).execute().body();
        log.info("fileServerResp:{}", resp);
        JSONObject respJson = JSONUtil.parseObj(resp);
        String fileId = "";
        if (SUCCESS_CODE == respJson.getInt("code") && !respJson.getJSONArray("data").isEmpty()) {
            jsonArray = respJson.getJSONArray("data");
        }
        return jsonArray;
    }


    /**
     * 文件流转换
     *
     * @param file
     * @return
     */
    public InputStreamResource createIs(MultipartFile file) {
        InputStreamResource isr = null;
        try {
            isr = new InputStreamResource(file.getInputStream(), file.getOriginalFilename());
        } catch (IOException e) {
            log.info("文件流转换异常:{}", e);
        }
        return isr;
    }


    public  InputStream downloadFile(String fileUrl) throws IOException {
        InputStream inputStream = null;
        try {
            inputStream = HttpRequest.get(fileUrl).execute().bodyStream();
            System.out.println("文件下载完成");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return inputStream;
    }


}








到了这里,关于调用hutool包调用http接口处理文件流-文件的上传下载工具类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA调用http上传文件(可多文件,可传参数)

     //下边是调用得方式.

    2024年02月11日
    浏览(38)
  • Postman 如何调用文件上传下载接口

    文件导入导出是管理后台的通用功能,所以在接口写好后在没有前端页面使用Postman进行接口调用测试接口功能成为一个选择。 导出  在我们输入接口地址,token等候  点击send  发现下载的成为了乱码(如下图) 这明显不符合我们的预期期望,在send按钮旁边下拉框 选择Send And  D

    2024年02月11日
    浏览(55)
  • Hutool的Http调用简单使用

    Http调用 http调用即通过http方式调用第三方接口,现成的工具库有很多,如HttpClient、RestTemplate、OKHttp,今天主要介绍Hutool-http 前置环境 Spring Initializr初始化项目 选择Spring Web和Lombok依赖 Java版本1.8 application.yml配置如下: 引入Hutool依赖: 先写一个简单的被调用接口 主要功能就是

    2024年02月16日
    浏览(29)
  • Springboot实现上传文件,并实现调用第三方接口post请求多文件上传文件

    项目过程中,经常会有和第三方接口打交道的过程,今天实现调用第三方上传文件的接口!! 通常拿到第三方的接口文档的时候,不是第一时间先写代码,而是详细阅读接口文档。若接口需要第三方提供的基本参数,例如signkey, secrect等,也可以是其他的,查看文档里是否提

    2024年02月16日
    浏览(48)
  • 【UE】HTTP接口上传文件_文件作为入参

    假设需要在UE中发送下方接口传输文件 使用From-data格式 在请求头Content-Type中加入间隔符Boundary 使用LoadFileToArray()读取文件,并加入分隔符、文件头等内容 转成字节 作为Content 创建BlueprintFunctionLibrary蓝图函数库 对应Build.cs中加入Http模块 增加函数 .h中 .cpp中 函数前改为自己的函

    2024年02月03日
    浏览(40)
  • java http远程调用接口下载文件

    远程调用http接口下载文件,接口返回流 一、将文件保存本地 二、将接收到流直接返回

    2024年02月14日
    浏览(47)
  • java创建上传文件接口并使用HTTP测试

    备注: 使用jersey框架 2.1.1.上传本地文件 参考链接: Jersey (JAX-RS) multiple files upload example

    2024年02月11日
    浏览(287)
  • hutool工具进行https接口调用(忽略ssl认证)

    1.设置忽略SSl工具类 2.工具类设置

    2024年02月04日
    浏览(43)
  • JAVA Http接口获取文件下载流,将下载的文件上传阿里云

     需要根据,业务数据,将存在第三方平台的数据,下载至本地,或转存阿里云OSS中。

    2024年02月16日
    浏览(48)
  • HTTP:http上传文件的原理及java处理方法的介绍

    为了说明原理,以下提供一个可以上传多个文件的例子,html页面代码如下:  显示效果如下:  通过点“浏览”选择要上传的文件,并分别输入保存时使用的文件名:  我们使用spring来处理上传的文件,代码如下:  为了能使以上代码正常运行,还要做一些配置。比如,如果

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包