首页 > 解决方案 > 接受 multipart/form-data 的 JAVA POST API 返回 400 响应

问题描述

我有一个 Java API,它应该接受文件列表,然后通过电子邮件将它们发送给用户。API如下:

    @POST
    @Path("/echoapi") 
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public Response getNotificationByUser(@FormDataParam("name") String name, @FormDataParam("email") String email, @FormDataParam("file") InputStream file) {
        try {
            List<InputStream> attachments = new ArrayList<>();
            attachments.add(file);
            EmailUtils.sendEmail(name, email, attachments);
            
            Gson gson = new Gson();
            String json = gson.toJson("");
            return Response.ok().entity(json).build();
        }
        catch(Exception e) {
            return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).build();
        }

    }

使用 Postman(出于测试目的)向此 API 发送以下请求时,我收到 400 响应

标题: 在此处输入图像描述

身体: 在此处输入图像描述

如果我将方法的签名更改为:

public Response getNotificationByUser(String requestBody) 

一切正常!但是,我需要访问 API 中的数据,而不是作为字符串访问,所以这还不够

标签: javascriptjavahttppostpostman

解决方案


推荐阅读