0

目前我有一个使用谷歌应用引擎的服务器实现,并且服务器 API 正在 iPhone、Android 和 Web 客户端上使用。

谷歌应用引擎上是否有任何可用的本机函数可以确定哪个客户端类型(iphone/android/web)正在进行 API 调用?

我知道找出这些信息的一种方法是通过从客户端传递一个密钥,同时使 API 调用将自己标识为它的客户端类型。但我想避免跨 3 个客户端的这种实现。

此处附加的是源自 Android 客户端的服务器日志。

"GET /api/getAllFeeds?id=xxxx HTTP/1.1" 200 789 - "Dalvik/1.6.0 (Linux; U; Android 4.1.1; GT-I9300 Build/JRO03C)" "mytestapp.appspot.com" ms=10923 cpu_ms=6629 cpm_usd=0.000088 loading_request=1 instance=00c61b117c22d1aab5f2fc54eb72f57774552188"

所以基本上服务器似乎知道发起呼叫者的类型。但我不确定如何从代码中检索它。

感谢您的帮助拉贾特

4

1 回答 1

1

调用者类型嵌入在 HTTP 请求的标头中,在字段下User-AgentgetHeaders( "User-Agent" )如果您的处理程序使用基本的 HttpServletRequest 类,您可以通过调用该方法获取该字段上的值的枚举。

如果您使用 Jersey 作为您的处理程序,您可以实现一个ContainerRequestFilter,它可以将请求作为 ContainerRequest 拦截,并且您可以调用getRequestHeaders()来获取标头。

请注意,单个请求字段可能包含多个值。将标题视为多值映射。

于 2012-12-19T12:02:11.243 回答