我知道如果我不使用泽西岛并使用类似的东西,这是一个简单的方法:
Enumeration<String> params = request.getParameterNames();
while(params.hasMoreElements()){
String paramName = (String)params.nextElement();
System.out.println("Parameter Name - "+paramName+", Value - "+request.getParameter(paramName));
}
params = request.getHeaderNames();
while(params.hasMoreElements()){
String paramName = (String)params.nextElement();
System.out.println("Header Name - "+paramName+", Value - "+request.getHeader(paramName));
}
params = request.getAttributeNames();
while(params.hasMoreElements()){
String paramName = (String)params.nextElement();
System.out.println("Attribute Name - "+paramName+", Value - "+request.getAttribute(paramName));
}
我也知道我可以做到这一点并完成它。
@FormParam("location") String location
但是如果我想要转储通过POST提交的表单的所有内容怎么办?
问题是我使用Jersey作为JAX-RS的实现并使用上面的代码输出:
Attribute Name - org.glassfish.jersey.server.spring.scope.RequestContextFilter.REQUEST_ATTRIBUTES, Value - org.glassfish.jersey.server.spring.scope.JaxrsRequestAttributes@11e035a
Attribute Name - org.glassfish.jersey.message.internal.TracingLogger, Value - org.glassfish.jersey.message.internal.TracingLogger$1@16e45c8
我猜我的数据包含在这里:JaxrsRequestAttributes我不确定。
我知道我在这里遗漏了一些东西。这不应该是困难的吗?
更新
正如Sotirios所说,
这是代码获取表单的转储。
try {
InputStream is = request.getInputStream();
int i;
char c;
while((i=is.read())!=-1)
{
// converts integer to character
c=(char)i;
// prints character
System.out.print(c);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
为了使其正常工作,我必须在参数中删除@FormParam,并省略@Context HttpSerlvetRequest请求。
除非需要删除@FormParam,否则没有其他方法可以更优雅的方式输出?也许从JaxrsRequestAttributes获取值?
我尝试创建一个变量JaxrsRequestAttributes,但它是一个默认类,无法直接访问它。
答案 0 :(得分:0)
基于Sotirios评论,这是答案:
这是方法签名
public Response authenticateUser(MultivaluedMap<String, String> form)
Iterator<String> it = form.keySet().iterator();
while(it.hasNext()){
String theKey = (String)it.next();
System.out.println("Parameter Name - "+theKey+", Value - "+form.getFirst(theKey));
}
System.out.println(form);
答案 1 :(得分:0)
可以使用以下方法访问HttpServletRequest:
@Context
private HttpServletRequest request;
不够吗?