gpt4 book ai didi

java - 如何从 ContainerRequestContext 获取表单数据参数

转载 作者:行者123 更新时间:2023-11-30 09:02:17 30 4
gpt4 key购买 nike

我使用 Jersey 2 来公开功能(restful API)。

我想在过滤器级别访问表单参数的地方,我们从 `ContainerRequestContext 访问 pathparamqueryparam 的方式。

过滤器:-

public class SecurityFilter implements ContainerRequestFilter, ContainerResponseFilter
{
private ResourceInfo ResourceInfo;

// ignore this
public SecurityFilter(ResourceInfo ResourceInfo)
{

}

@Override
public void filter(ContainerRequestContext ctx) throws IOException
{
MultivaluedMap<String, String> pathparam = ctx.getUriInfo().getPathParameters();
MultivaluedMap<String, String> queryparam = ctx.getUriInfo().getQueryParameters();
// Here I want all form parameters
}

// ignore this
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException
{

}
}

那么如何从上面的过滤器中的 ContainerRequestContext 获取表单参数呢?


编辑:

我有一种获取表单数据的方法是

((ContainerRequest) context).bufferEntity();
// Read entity
FormDataMultiPart multiPart = ((ContainerRequest) context).readEntity(FormDataMultiPart.class);
String myValue = multiPart.getField("foo").getValue();

但这不适用于大文件,因为 ((ContainerRequest) context).bufferEntity() 包含内存中的实体,所以 Exceptionorg.glassfish.jersey.server.ContainerException: java. lang.OutOfMemoryError: Java heap space异常发生。

最佳答案

请参阅我对您的 issue opened against Jersey 的评论.

基本上您已经在编辑后的文本中回答了您的问题。不幸的是,如果您需要处理非常大的实体,此时您需要手动完成繁重的工作(实体流的缓冲、处理、服务和清理)。

关于java - 如何从 ContainerRequestContext 获取表单数据参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26053697/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com