【问题标题】:How to detect if a call to a REST server in java was from a mobile device?如何检测对 Java 中 REST 服务器的调用是否来自移动设备?
【发布时间】:2012-05-26 00:56:09
【问题描述】:

我已经在 J​​ava 中为 Android 设备和桌面设备开发了一个基于 REST 的服务器,现在我想在这两个实体之间有所作为。

我想知道 Android 设备何时访问方法(创建/读取/更新/删除)以及桌面 Web 应用程序何时访问。

这是我的代码快照:

@Path("/v2")
public class RESTfulGeneric {

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/get")
public Response Get() {
        ResponseBuilder builder = Response.status(Response.Status.OK);
        ....
        return builder.build();
    }

@POST
@Consumes({MediaType.APPLICATION_JSON })
@Path("/create/{Name}")
public Response Post(String Table, @PathParam("Name") String Name) {

        ResponseBuilder builder = Response.status(Response.Status.OK);
        ..........
            return builder.build();
    }

}

我怎么知道,或者应该验证什么才能知道 Android 设备正在调用这些方法?

我知道有这个request.getHeader("User-Agent") 可以帮助我,但是这个请求只在 Servlet 中可用。

有什么想法吗?

【问题讨论】:

标签: java rest jax-ws user-agent


【解决方案1】:

您可以通过向您的请求处理方法添加一个参数来从请求中获取用户代理标头,即

public Response Post(String Table, @PathParam("Name") String Name, @HeaderParam("user-agent") String userAgent) {
    if (userAgent.contains("Android")) {
        // mobile specific logic
    }
}

这是一个有用的 Android 用户代理列表...

http://www.gtrifonov.com/2011/04/15/google-android-user-agent-strings-2/

【讨论】:

  • 这很有魅力。抱歉耽搁了,但我在 GAE 上部署应用程序时遇到了一些问题。
【解决方案2】:

如果使用spring mvc,你可以使用@RequestHeader注解

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    相关资源
    最近更新 更多