2012-12-19 14 views
0

目前我有一個使用谷歌應用引擎的服務器實現,並且服務器API正在iPhone,Android和Web客戶端之間使用。找出哪個客戶端正在進行API調用:Google應用引擎

在谷歌應用程序引擎可以確定哪些客戶端類型(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

使用用戶代理可以識別Web客戶端。 String userAgent = request.getHeader(「User-Agent」); – Chandana

回答

1

的主叫類型嵌入在HTTP請求頭,現場User-Agent下。如果您的處理程序使用基本的HttpServletRequest類,則可以通過調用getHeaders("User-Agent")方法獲得該字段上的值的枚舉。

如果您正在使用Jersey作爲處理程序,那麼可以實現一個ContainerRequestFilter,該請求可以將請求截獲爲ContainerRequest,並且您可以調用getRequestHeaders()來獲取標題。

請注意,單個請求字段可能包含多個值。將標題看作多值地圖。

相關問題