How to submit multiple entities to the post method from jersey client program?

后端 未结 1 2032
既然无缘
既然无缘 2020-12-19 19:07

I am trying to pass multiple entities to the web service method. The web service method has two parameters of pojo entity type. I am able to post only one entity to the web

相关标签:
1条回答
  • 2020-12-19 19:32

    A request can only have one entity body, that's why the restriction. The only option I can think of is to use multipart request, where you can have multiple body parts.

    Example server side

    @Path("multipart")
    public class MultipartResource {
    
        @POST
        @Consumes(MediaType.MULTIPART_FORM_DATA)
        public Response doPost(@FormDataParam("emp") Emp emp,
                               @FormDataParam("student") Student student) {
            StringBuilder builder = new StringBuilder();
            builder.append("Emp:").append(emp.name).append("\n");
            builder.append("Student:").append(student.name).append("\n");
            return Response.ok(builder.toString()).build();
        }
    
        public static class Student {
            public String name;
        }
    
        public static class Emp {
            public String name;
        }
    }
    

    Client side

    public class Main {
        public static void main(String[] args) throws Exception {
            Client client = Client.create();
    
            Emp emp = new Emp();
            emp.name = "pee";
    
            Student stu = new Student();
            stu.name = "skillet";
    
            FormDataMultiPart multipart = new FormDataMultiPart()
                    .field("emp", emp, MediaType.APPLICATION_JSON_TYPE)
                    .field("student", stu, MediaType.APPLICATION_JSON_TYPE);
    
            final String url = "http://localhost:8080/api/multipart";
            String response = client.resource(url).type(MediaType.MULTIPART_FORM_DATA_TYPE)
                    .post(String.class, multipart);
            System.out.println(response);   
        }
    }
    

    Result:

    Emp:pee
    Student:skillet

    Jersey dependency for multipart support.

    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>${jersey1.version}</version>
    </dependency>
    
    0 讨论(0)
提交回复
热议问题