如何使用服务器bean映射将java对象作为post参数发送

如何使用服务器bean映射将java对象作为post参数发送,java,apache,rest,Java,Apache,Rest,我目前正在编写一个客户端来访问rest服务,服务器rest调用接受一个带有@BeanParam注释的java object类型的参数。 如何从Apache HTTP客户端发送数据来实现这一点 下面是我的服务器和客户端代码 public void getOtp(HttpServletRequest request){ QPayOTPRequest qpayOTPRequest = formatDataForOtp(request); StringWriter writer =

我目前正在编写一个客户端来访问rest服务,服务器rest调用接受一个带有@BeanParam注释的java object类型的参数。 如何从Apache HTTP客户端发送数据来实现这一点

下面是我的服务器和客户端代码

public void getOtp(HttpServletRequest request){

    QPayOTPRequest qpayOTPRequest = formatDataForOtp(request);

     StringWriter writer = new StringWriter();
     JsonGenerator jgen;
    try {
        jgen = new JsonFactory().createJsonGenerator(writer);
        jgen.setCodec(new ObjectMapper());
         jgen.writeObject(qpayOTPRequest);
         jgen.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     System.out.println(writer.toString());

     String url = "sdfghjklfghjk;
     CloseableHttpClient httpClient = HttpClientBuilder.create().build(); 
     try {
         HttpPost post = new HttpPost(url);
        StringEntity entiry = new StringEntity(writer.toString());
        post.addHeader("content-type", "application/x-www-form-urlencoded");
        post.setEntity(entiry);
        HttpResponse response = httpClient.execute(post);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}   
服务器代码

@Override
@POST
@Path("/generate_verify_otp/{issuername}")
@Produces("application/x-www-form-urlencoded")
@Consumes("application/x-www-form-urlencoded")
public MultivaluedMap<String, Object> generateVerifyOTP(@BeanParam QPayOTPRequest qpayOTPRequest, @PathParam("issuername")) {

  some business logic
}

如何从客户端发送参数,使其映射到@beanparam对象。

我以为您只需使用普通查询参数发送参数,然后使用
public MyBeanParam(@QueryParam(“q”)String QueryParam){this.QueryParam=QueryParam;}
查看(@QueryParam)的情况下的是这样,但我的遗留代码(@BeanParam将java对象作为参数。Jersey基于queryparams创建Bean-请参阅我给您的链接