Java Restlet过滤器Post请求
我想在Java Restlet过滤器Post请求,java,restlet,Java,Restlet,我想在filter中过滤Post请求(在它到达资源之前)。 为了过滤请求,我想从bode请求中检索一个令牌,并对其进行一些测试 现有资源: @Post public JsonRepresentation init(JsonRepresentation jRep) { String token = jRep.getJsonObject().getString("token"); . . . } 当前筛选器: @Override protected int befo
filter
中过滤Post
请求(在它到达资源之前)。
为了过滤请求,我想从bode请求中检索一个令牌,并对其进行一些测试
现有资源:
@Post
public JsonRepresentation init(JsonRepresentation jRep) {
String token = jRep.getJsonObject().getString("token");
.
.
.
}
当前筛选器:
@Override
protected int beforeHandle(Request request, Response response) {
int result = STOP;
String token = (String) Request.getCurrent().getAttributes().get("token");
.
.
.
}
这些代码不会检索令牌
我的问题是如何检索正文请求?您可以尝试以下方法来检索正文:
公共静态字符串getBody(HttpServletRequest请求)引发IOException{
String body = null;
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
return body;
}
你可以尝试这样的方法来找回身体:
公共静态字符串getBody(HttpServletRequest请求)引发IOException{
String body = null;
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
return body;
}
您可以直接从其关联的实体对象获取请求的有效负载文本,如下所述:
Representation repr = request.getEntity();
String content = repr.getText();
希望它能帮助你,
Thierry您可以直接从其关联的实体对象获取请求的有效负载文本,如下所述:
Representation repr = request.getEntity();
String content = repr.getText();
希望它能帮助你,
Thierry由于直接将请求实体存储到内存中是危险的(想象一下,如果客户端发送一个TB的表示),框架默认情况下不会将表示持久化到内存中,它们只能读取一次(从套接字)
我想您的问题的答案可以从这里读到:因为直接将请求实体存储到内存中是危险的(想象一下,如果客户端发送一个TB的表示),框架默认情况下不会将表示持久化到内存中,它们只能读取一次(从套接字)
我想你的问题的答案可以从这里读到:我使用org-restletRequest
,而不是HttpServletRequest
我使用org-restletRequest
,而不是HttpServletRequest