- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为 Oauth2 使用 Oltu。
当使用@Context HttpServletRequest 请求时,我无法检索发布数据
当我使用@FormParam 时,我能够检索发布数据。
将请求传递给 OAuthTokenRequest
OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request);
出现以下错误
{"error":"invalid_request","error_description":"Missing grant_type parameter value"}
在 oltu OAuthTokenRequest 类上调试时,以下代码用于检索参数值
public String getParam(String name) {
return this.request.getParameter(name); // from request it is unable to get post data.As i am getting request object using @Context HttpServletRequest request .
}
据说使用@Context HttpServletRequest 请求无法获取使用@Context HttpServletRequest 请求的发布数据所以,我的问题是
如何在 jax-ws 中获取带有 post 数据的 HttpServletRequest 请求 这样我就可以将 HttpServletRequest 请求传递给 OAuthTokenRequest这是我的代码
@Path("/token")
public class TokenEndpoint {
@POST
@Consumes("application/x-www-form-urlencoded")
@Produces("application/json")
public Response authorize(@FormParam("state") String state,@Context HttpServletRequest request) throws OAuthSystemException {
try {
// here I am unable to get value of request.getParameter("state")
// but using (@FormParam("state") I am able to get value of post parameter state
request.getParameter("state");
// exception is thrown from following code
OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request);
最佳答案
找到了解决方法(阅读评论)。
Jersey 正在使用 POST 数据。
解决方案是包装 HttpServletRequest 并覆盖 getParameters()
。
这是包装器:
public class OAuthRequestWrapper extends HttpServletRequestWrapper {
private MultivaluedMap<String, String> form;
public OAuthRequestWrapper(HttpServletRequest request, MultivaluedMap<String, String> form)
{ super(request); this.form = form; }
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
if (value == null)
{ value = form.getFirst(name); }
return value;
}
}
这是实现 token POST 方法的方法:
@POST
@Path("/token")
@Consumes("application/x-www-form-urlencoded")
@Produces("application/json")
public Response token(@Context HttpServletRequest request, MultivaluedMap<String, String> form) {
[...]
OAuthTokenRequest oauthRequest = new OAuthTokenRequest(new OAuthRequestWrapper(request, form));
[...]
}
关于java - 使用 Oltu 传递给 OAuthTokenRequest 时无法使用 @Context HttpServletRequest 检索发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22376810/
我正在为 Oauth2 使用 Oltu。 当使用@Context HttpServletRequest 请求时,我无法检索发布数据 当我使用@FormParam 时,我能够检索发布数据。 将请求传递给
我是一名优秀的程序员,十分优秀!