我有下面的代码,使用它我可以使用 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[]。我错过了什么?提前致谢。