0

現在、Google アプリ エンジンを使用したサーバー実装があり、サーバー API は iPhone、Android、および Web クライアントで使用されています。

API 呼び出しを行っているクライアントの種類 (iphone/android/web) を判断できる Google アプリ エンジンで利用可能なネイティブ関数はありますか?

この情報を見つける 1 つの方法は、それ自体がクライアントのタイプであることを識別する 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-Agent。ハンドラーが基本的な HttpServletRequest クラスを使用する場合、メソッドを呼び出すことで、このフィールドの値の列挙を取得できますgetHeaders( "User-Agent" )

ハンドラーに Jersey を使用している場合は、要求を ContainerRequest としてインターセプトできるContainerRequestFilterを実装し、 を呼び出してgetRequestHeaders()ヘッダーを取得できます。

1 つの要求フィールドに複数の値が含まれている可能性があることに注意してください。ヘッダーを多値マップと考えてください。

于 2012-12-19T12:02:11.243 に答える