使用HttpRequest工具类调用第三方URL传入普通以及文件参数并转换MultipartFile成File

本文介绍了如何在Java项目中使用HutoolHttpRequest工具类,配合Spring配置,处理文件上传,模拟第三方服务并调用接口,实现普通参数和文件参数的传递。
摘要由CSDN通过智能技术生成


一、依赖及配置

        <!--工具依赖-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.16</version>
        </dependency>

设置文件上传大小限制

Spring:
  #设置文件上传大小限制
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 1000MB

二、代码

1、模拟第三方服务post请求表单模式

    /**
     * multipartFileTOFile
     */
    @PostMapping("/multipartFileTOFile")
    public void multipartFileTOFile(@RequestParam("dahuaId") String dahuaId, @RequestParam("file") MultipartFile file) throws IOException {
        //MultipartFile转换File
        File photo = File.createTempFile("photo-", ".jpg");
        file.transferTo(photo);
	}

2、调用服务

    void test() {
        File file = new File("C:/xxx/xxxxxxxxxx.jpg");

        Map data = new HashMap();
        data.put("dahuaId", "abc123");
        data.put("file", file);
        HttpRequest.post("http://127.0.0.1:8888/dahua/multipartFileTOFile")
                .form(data)
                .contentType("multipart/form-data")//拼接参数类型为文件类型
                .execute()
                .body();
    }

3、效果实现

在这里插入图片描述

三、通用请求

1.get请求表单形式

            result = HttpRequest.get(uri)     
                                .contentType("application/json")    //拼接参数类型
                                .header("access-token", accessToken)  //请求头token
                                .form("code", code)  //form表单参数
                                .execute()  
                                .body();

2.post请求请求体模式

String result = HttpRequest.post(uri)
                                   .contentType("application/json")
                                   .header("access-token", accessToken)
                                   .body(jsonObject.toJSONString())
                                   .execute()
                                   .body();

  • 无论你遭遇多少失败,只要每次都能重新站起来,你就离成功又近了一步。
  • 梦想不是遥不可及的幻想,而是实现希望和追求的动力源泉。只要心存信念,付诸行动,梦想就能成真。
  • 面对生活的风雨,坚持就是胜利的法宝。每一次努力都在积累力量,每一天奋斗都在靠近目标。
  • 不要害怕失败,因为失败蕴含着成长和进步的机会。坚持不懈,勇往直前,你将成为最好的自己。
  • 生活没有捷径,成功无法被偶然所拥有。勇敢迈出第一步,执着追求,你将创造属于自己的辉煌篇章。
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MultipartFile是Spring框架中的一个接口,用于处理HTTP请求中的文件上传。通过MultipartFile,我们可以轻松地获取上传的文件名、文件类型、文件大小等信息,并且可以将文件保存到本地或者其他存储介质中。 下面是一个使用MultipartFile和HttpServletRequest传输文件的例子: ```java @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String upload(HttpServletRequest request) throws IOException { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile file = multipartRequest.getFile("file"); String fileName = file.getOriginalFilename(); String filePath = "D:/upload/" + fileName; File dest = new File(filePath); file.transferTo(dest); return "上传功!"; } ``` 在上面的例子中,我们首先将HttpServletRequest对象转换MultipartHttpServletRequest对象,然后通过getFile()方法获取上传的文件。接着,我们可以通过MultipartFile的getOriginalFilename()方法获取文件名,通过transferTo()方法将文件保存到本地。 关于通过httpclient传输文件,可以使用HttpEntity和MultipartEntityBuilder来实现。下面是一个使用HttpEntity和MultipartEntityBuilder传输文件的例子: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, file.getOriginalFilename()); HttpEntity httpEntity = builder.build(); httpPost.setEntity(httpEntity); CloseableHttpResponse response = httpClient.execute(httpPost); ``` 在上面的例子中,我们首先创建一个MultipartEntityBuilder对象,然后通过addBinaryBody()方法将文件添加到请求中。接着,我们将MultipartEntityBuilder对象转换为HttpEntity对象,并将其设置到HttpPost对象中。最后,我们使用HttpClient执行HttpPost请求,并获取响应结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和烨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值