如何将多个参数传递给Jersey POST方法

Ter*_*nce 2 java rest jersey

我试图将多个参数传递给Jersey POST方法。目前,我正在按照以下步骤将单个参数传递给Jersey POST方法。

Client client = ClientBuilder.newClient();
WebTarget target= client.target("http://localhost:8080/Rest/rest/subuser").path("/insertSubUser");

SubUserBean subUserBean=new SubUserBean();
subUserBean.setIdUser(1);
subUserBean.setIdSubUserType(1);
subUserBean.setIdSubUser(15);
subUserBean.setFirstName("Haritha");
subUserBean.setLastName("Wijerathna");
subUserBean.setNumberOfDaysToEditRecord(14);
subUserBean.setUserName("haritha");
subUserBean.setPassword("hariwi88");
subUserBean.setDateCreated(Common.getSQLCurrentTimeStamp());
subUserBean.setLastUpdated(Common.getSQLCurrentTimeStamp());

target.request(MediaType.APPLICATION_JSON_TYPE).post(Entity.entity(subUserBean, MediaType.APPLICATION_JSON_TYPE));
Run Code Online (Sandbox Code Playgroud)

SubUserJSONService.java

@Path("/subuser")
public class SubUserJSONService {

    @POST
    @Path("/insertSubUser")
    @Consumes(MediaType.APPLICATION_JSON)
    public String updateSubUser(SubUserBean bean){

        SubUserInterface table = new SubUserTable();
        String result= table.insertSubUser(bean);
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过Jersey POST方法将参数传递给以下方法。

public String insertHistory(List<SocialHistoryBean> list, String comment){
    //my stuffs
}
Run Code Online (Sandbox Code Playgroud)

有什么想法可以做上述工作吗?

谢谢。

She*_*rma 6

您可以尝试使用MultivaluedMap。新增表格数据并将其发送到服务器。下面的示例不仅仅针对演示/逻辑流程测试代码。

WebTarget webTarget = client.target("http://www.example.com/some/resource");
    MultivaluedMap<List, String> formData = new MultivaluedHashMap<List, String>();
    formData.add(List, "list1");
    formData.add("key2", "value2");
    Response response = webTarget.request().post(Entity.form(formData));
Run Code Online (Sandbox Code Playgroud)

在服务器端使用类似

@Path("/uripath")
@POST -- if this is post or @GET
@Consumes("application/x-www-form-urlencoded;charset=UTF-8") or json..
@Produces("application/json")
public void methodNameHere(@FormParam("list") List<String> list1, @FormParam("key2") String val2) {

    System.out.println("Here are I am");
    System.out.println("list1" + list1.size);
    System.out.println("val2" + val2);
}
Run Code Online (Sandbox Code Playgroud)

阅读更多这里的文档..