获得泛型类型的restful响应

时间:2016-11-22 13:47:58

标签: java rest java-ee jersey

EDITED

我在使用Jersey的java EE Web应用程序中消耗了一个安静的Web服务时遇到了麻烦。我有一个安静的Web服务(用于测试目的),我必须使用响应来显示它。问题是我在使用泛型类型的字段上获取了一个ElementNSImpl对象。我究竟做错了什么?非常感谢你。

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces("application/json; charset=utf-8")
public ResultadoConsulta consultar(LiquidacionProvisoriaEntradaServicio parametro){

    ResultadoConsulta<ResultadoLiquidacionDetalleRespuestaServicio> resultado = new ResultadoConsulta<>();
    List<ResultadoLiquidacionDetalleRespuestaServicio> lista = new ArrayList<>();
    ResultadoLiquidacionDetalleRespuestaServicio r = new ResultadoLiquidacionDetalleRespuestaServicio();
    r.setCodigoConcepto(1);
    r.setCodigoFormaPago("formapago");
    r.setDescripcionConcepto1("descripcion 1");
    r.setDescripcionConcepto2("descripcion 2");
    r.setDescripcionEmpresaFacturadora("empresa facturadora");
    r.setFechaComprobante(new Date());
    r.setFechaGeneracionConcepto(new Date());
    r.setIdEmpresaFactura(1);
    r.setImporteConcepto(2F);
    r.setNumeroCuenta(1234);
    r.setNumeroCuentaFactura(12343);
    r.setNumeroFormaPago(Short.valueOf("2"));


    lista.add(r);

    resultado.setListaResultado(lista);
    resultado.setCantidadRegistrosTotales(200);
    resultado.setNumeroPagina(1);
    resultado.setTamanoPagina(1);

    return resultado;


}

来自我的客户的方法:

public <T> T ejecutarWebServiceJsonPost(Object requestEntity, Class<T> responseType) throws ClientErrorException {
    return webTarget.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), responseType);
}

响应类:

 @XmlRootElement
public class ResultadoConsulta<T> {
    @XmlElement
    private List<T> listaResultado;
    @XmlElement
    private Integer cantidadRegistrosTotales;
    @XmlElement
    private Integer numeroPagina;
    @XmlElement
    private Integer tamanoPagina;
}

1 个答案:

答案 0 :(得分:0)

对于通用回复,您可以尝试:

    import javax.ws.rs.core.Response;

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces("application/json; charset=utf-8")
    public Response consultar(LiquidacionProvisoriaEntradaServicio parametro){

        .....

        return Response.status(200).entity(resultado).build();
    }

来源:Jersey Hello World Example