找出正在进行API调用的客户端:Google应用引擎

时间:2012-12-19 11:31:56

标签: java google-app-engine

目前我有一个使用谷歌应用引擎的服务器实现,服务器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"

所以基本上服务器似乎知道原始调用者类型。但我不知道如何从代码中检索它。

感谢您的帮助 拉贾特

1 个答案:

答案 0 :(得分:1)

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

如果你使用Jersey作为处理程序,你可以实现一个ContainerRequestFilter来拦截请求作为ContainerRequest,你可以调用getRequestHeaders()来获取标题。

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