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

时间:2017-01-18 08:03:07

标签: java apache rest

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

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

服务器代码

@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
}

客户端代码

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();
    }


}   

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

0 个答案:

没有答案