java - @context httpServletRequest 对 jersey 中 post 方法的请求为空

标签 java android jersey-2.0 jersey-1.0

我正在从 Android 客户端获取多部分消息。我正在使用 jersey webservice 来接收该多部分数据。我可以检索多部分数据。但我无法使用 @Context HttpServletRequest 请求来获取用户 ID。我的安卓客户端是,

HttpClient httpClient = new DefaultHttpClient();

Log.e("Picture Upload URL is:", QueryConfig.PROTOCOL+ StaticHelper.HOST + StaticHelper.port+QueryConfig.projectService+QueryConfig.sendProfilePicture);

HttpPost postRequest = new HttpPost(QueryConfig.PROTOCOL+ StaticHelper.HOST + StaticHelper.port+QueryConfig.projectService+QueryConfig.sendProfilePicture);

ByteArrayBody bab = new ByteArrayBody(data,StaticHelper.UserID+".jpg");
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("file", bab);
reqEntity.addPart("fileFilename",new StringBody(StaticHelper.UserID+".jpg"));
HttpResponse response = httpClient.execute(postRequest);

我的 Jersey 服务是

@Path("/mobileUserPictureInsert")
@POST
@Consumes("multipart/*")
@Produces(MediaType.APPLICATION_JSON)
public String save(@Context HttpServletRequest request, MultiPart multiPart)
        throws ParseException {
    BodyPartEntity bpeTokenId = (BodyPartEntity) multiPart.getBodyParts()
            .get(2).getEntity();
    try {
        tokenId = getString(bpeTokenId.getInputStream());
        String userId = "";
        userId = getSession(tokenId, request);

获取 session 的方法是

protected String getSession(String token, HttpServletRequest req)
        throws ServletException, IOException {

    String value = (String) context.getAttribute(token);

    LOG.info("Retrive Token Value-->" + value);

    return value;
}

我在这里传递生成的请求和 token 以检索用户 ID。它适用于 get 方法。但对于 post 方法,我得到的是空值。请帮助我。如何在 Jersey 中获取对 post 方法的请求。

最佳答案

您现在正在做的是从 ServletContext 本身而不是从 HttpServletRequest 获取 context.getAttribute()。所以它应该是这样的:String value = (String) req.getAttribute(token)。另请记住,如果给定名称的属性不存在,.getAttribute() 方法将返回 null。

关于java - @context httpServletRequest 对 jersey 中 post 方法的请求为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838129/

相关文章:

java - JSF panelGroup - 1 个跨度?

android - IONIC 2 向多个收件人发送消息

java - 重力底部,文字不向上滚动

spring-boot - Spring Boot + Jersey 类型过滤器 - 服务消耗 MULTIPART_FORM_DATA 的错误请求 400

maven - Spring Jersey - java.lang.NoSuchMethodError : javax. ws.rs.core.Application.getProperties()Ljava/util/Map

java - 将 Jersey 客户端 1.x 升级到 2.x 时 UriBuilder 上的 AbstractMethodError

java - 如何使用 Java API 访问远程 HDFS 集群的配置 xml 文件?

java - 导入org.apache无法解析

java - 如何在micronaut中获取当前主机和端口?

java - 是否可以保存时间选择器的数据并在下次应用程序启动时显示它们?