我已经创建了一个Jersey资源,可以处理@FormDataParam
中的文件上传 - 带注释的参数(资源也配置为接收查询和标头参数)。
使用Swagger-UI进行测试,只要我将文件与其他参数一起发送,一切正常
但是如果我省略了这些文件,并且只填写其他参数,那么我的Java方法就不会收到请求(我用调试器验证了这一点),而是以400 Bad Request
错误提前结束。
班级声明:
@Path("/v1/users")
@Produces("application/json")
@Api("UploadDocumento")
public class UploadDocumentResourcesApiV10 extends CommonResourcesApi {
方法声明:
@Consumes({MediaType.MULTIPART_FORM_DATA})
@POST @Path("{userRef}/documents")
public Response uploadDocuments(
@HeaderParam("X-Api-Token") String apiToken,
@PathParam("userRef") String contactId,
@QueryParam("desc") String uploadDescription,
@QueryParam("file1Desc") String file1Description,
@FormDataParam("file1") InputStream file1, @FormDataParam("file1") FormDataContentDisposition file1Meta,
@QueryParam("file2Desc") String file2Description,
@FormDataParam("file2") InputStream file2, @FormDataParam("file2") FormDataContentDisposition file2Meta) {
我已检查过浏览器请求标头,特别是Content-Type
标头,在这两种情况下它们都是相同的。
即使使用cUrl的测试也会出现同样的错误。
可能出现什么问题?