有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我目前正在编写一个客户端来访问rest服务,服务器rest调用接受一个带有@BeanParam注释的java object类型的参数。 如何从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) 个答案