Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找出正在进行API调用的客户端:Google app engine_Java_Google App Engine - Fatal编程技术网

Java 找出正在进行API调用的客户端:Google app engine

Java 找出正在进行API调用的客户端:Google app engine,java,google-app-engine,Java,Google App Engine,目前,我有一个使用谷歌应用程序引擎的服务器实现,服务器API正在iPhone、Android和Web客户端中使用 google app engine上是否有任何本机函数可用于确定进行API调用的客户端类型(iphone/android/web) 我知道找到这些信息的一种方法是从客户端传递密钥,同时进行API调用,将自己标识为它所属的客户端类型。但我希望避免在3个客户机上实现此功能 这里附上一个服务器日志,它来自一个Android客户端 "GET /api/getAllFeeds?id=xxxx

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

google app engine上是否有任何本机函数可用于确定进行API调用的客户端类型(iphone/android/web)

我知道找到这些信息的一种方法是从客户端传递密钥,同时进行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"
因此,从本质上讲,服务器似乎知道发起调用方的类型。但我不知道如何从代码中检索它

谢谢你的帮助
Rajat

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

如果您正在为处理程序使用Jersey,则可以实现一个可以作为ContainerRequest截获请求的,并且可以调用
getRequestHeaders()
来获取头


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

使用用户代理可以识别web客户端。字符串userAgent=request.getHeader(“用户代理”);