Java 在Junit中为我的多部分添加值(使用jersey)

Java 在Junit中为我的多部分添加值(使用jersey),java,rest,junit,jersey,Java,Rest,Junit,Jersey,您好,我在用junit测试jersey web服务时遇到了一个问题。我试图在参数中添加一个值 @POST @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces(MediaType.APPLICATION_JSON) public Response parsingPdfOrange(@FormDataParam("fichier") InputStream uploadedInputStream, @FormDataParam("fi

您好,我在用junit测试jersey web服务时遇到了一个问题。我试图在参数中添加一个值

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response parsingPdfOrange(@FormDataParam("fichier") InputStream uploadedInputStream,
        @FormDataParam("fichier") FormDataContentDisposition fileDetail,
        @FormDataParam("TypeFacture") String typeFile) {
    try {
        // my code //

        return Response.status(201).entity(info).build();
}catch Exception e{
        return Response.status(406).entity("pb").build();
}
但是我不知道如何将我的typeFile添加到实体中,我已经尝试过了,但是字符串无法通信并返回NullPointerExection

    @Test
public void parsePDF_TemplateNotExist() throws Exception {



        FileDataBodyPart filePart = new FileDataBodyPart("fichier", new File(currentpath+FactureValide));
        BodyPart filePart2 = new BodyPart(templateName, MediaType.TEXT_PLAIN_TYPE);

        FormDataMultiPart formDataMultipart = new FormDataMultiPart();
        FormDataMultiPart multipart = (FormDataMultiPart) formDataMultipart.bodyPart(filePart).bodyPart(filePart2);

        Response response = (target("pdf").request().post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA)));
        System.out.println(currentpath);
        response.close();
        formDataMultipart.close();
}
我想知道我如何解决我的pb问题,并就测试的2个实体进行沟通

编辑:这是我的jsp


费希尔环境酒店
费希尔环境酒店
人造橙
制作EDF
费希尔炮位*



如果只使用
BodyPart
,则不会得到
内容配置
标题,该标题包含BodyPart的名称
BodyPart
是更通用的多部件。您需要的是多部分表单数据。为此,您可以使用
FormDataBodyPart
。它具有以下构造函数

FormDataBodyPart(String name, Object entity, MediaType mediaType)
在这里,您可以指定名称或主体部分,该名称用于使用
@FormDataParam
注释提取该名称。所以你可以用

FormDataBodyPart filePart2
    = new FormDataBodyPart("TypeFacture", templateName, MediaType.TEXT_PLAIN_TYPE);
您也可以只使用
FormDataMultiPart
字段
方法,而不是创建
formdataodypart
。所以你也可以这样做

FormDataMultiPart formDataMultipart = new FormDataMultiPart()
    .field("TypeFacture", templateName, MediaType.TEXT_PLAIN_TYPE);
或者更简单,如果它只是一个计划文本部分,您可以离开
MediaType
,它会自动将其设置为
text/plain

FormDataMultiPart multipart = (FormDataMultiPart) new FormDataMultiPart()
        .field("TypeFacture", templateName)
        .bodyPart(new FileDataBodyPart("fichier", new File("test.txt")));
FormDataMultiPart multipart = (FormDataMultiPart) new FormDataMultiPart()
        .field("TypeFacture", templateName)
        .bodyPart(new FileDataBodyPart("fichier", new File("test.txt")));