dromara / hutool

🍬A set of tools that keep Java sweet.
https://hutool.cn
Other
28.91k stars 7.48k forks source link

对于HttpRequst,在请求header的contentType=multipart/form-data的情况下,怎么设置单项值contentType=application/json? #3626

Closed Fxiao1 closed 2 months ago

Fxiao1 commented 2 months ago

版本情况

JDK版本: openjdk_1.8 hutool版本: 5.7.10

问题描述(包括截图)

我想发起如下请求 image image

接收端controller端的方法签名是:

    @PostMapping("api/saveUser")
    public AjaxResult apiSavePUser(@RequestPart("photoUser") PhotoUser photoUser,
                           @RequestPart("passport") MultipartFile passport,
                           @RequestPart("driver") MultipartFile driver,
                           @RequestPart("idCard") MultipartFile idCard,
                           @RequestPart("masterDrawing") MultipartFile masterDrawing
                           ){

请问我应该怎么设置其中一项的contentType=application/json?

Fxiao1 commented 2 months ago

我调用的方法如下:

        HttpRequest httpRequest = HttpRequest.post(idPhotoUploadApi);
        HttpResponse response=httpRequest.form("photoUser", JSONUtil.toJsonStr(photoUser))
            .form("passport", passport)
            .form("driver", driver)
            .form("idCard", idCard)
            .form("masterDrawing", masterDrawing).execute();

然后服务端就会报错:Content type 'application/octet-stream' not supported

looly commented 2 months ago

form的value需要使用HttpResource包装一下:

.form("xxx", new HttpResource(new StringResource(jsonValue), "application/json"));
Fxiao1 commented 2 months ago
.form("xxx", new HttpResource(new StringResource(jsonValue), "application/json"));

请问其中的HttpResource是哪个类?我的项目中只能找到一个org.springframework.web.servlet.resource.HttpResource,并且还是个接口

image

looly commented 2 months ago

@Fxiao1 我想你需要升级下Hutool版本了。

Fxiao1 commented 2 months ago

我已经更新到5.8.28了,还是找不到这个类 image image

looly commented 2 months ago

@Fxiao1 cn.hutool.http.HttpResource

Fxiao1 commented 2 months ago

确实在github中看到这个类了HttpResource.java,但奇怪的是我本地就是找不到这个类,我再找找到底什么原因,感谢指导。

looly commented 2 months ago

@Fxiao1 建议重新build一下项目,把旧版本的Hutool排除掉。

Fxiao1 commented 2 months ago

我的锅,这张截图都已经能找到了,我眼拙没看到,以为还是spring的那个同名接口 image

至此问题已解决,需要更新到新版本(5.8.28)的hutool就有了,我旧版本用的是5.7.10