使用 ContainerRequestContext 读取 entityStream 后 API 中断

问题描述 投票:0回答:0

我有下面的代码,使用它我可以使用 getEntityStream() 获取输入流。

    public String getRequestEntityStream(ContainerRequestContext requestContext) throws IOException {

        try (InputStream in = requestContext.getEntityStream()) {
            ByteArrayOutputStream out = new ByteArrayOutputStream(64 * 1024);
            IOUtils.copy(in, out);
            byte[] entity = out.toByteArray();

            // reset the input stream
            ByteArrayInputStream inNew = new ByteArrayInputStream(entity);
            requestContext.setEntityStream(inNew);

            String str = new String(entity);
            return str;
        }
    }

我能够像下面这样很好地获取实体流:

Request Entity Stream :grant_type=password&username=system&password=system&client_id=xxx

问题是在我读取请求实体流后,API 调用抛出如下错误。该错误表明缺少 grant_type,即使从“请求实体流”的上述数据中可以清楚地看出存在“grant_type”。可能是我执行“setEntityStream”的数据类型不起作用。我怎样才能只读取输入流而不需要转换为 ByteArrayInputStream[]。我错过了什么?提前致谢。

java spring-boot jersey jax-rs
© www.soinside.com 2019 - 2024. All rights reserved.