web-dev-qa-db-ja.com

JavaでRESTfulWebサービスを使用してリモート/クライアントIPアドレスを取得する方法は?

プロジェクトでRESTWebサービスを作成しました。Webサービスの呼び出しは別のマシンから送信される可能性があるため、REST webserviceを介してIPアドレスを確認する必要があります。

これから linkrequest.getRemoteAddr()これを使用します。

しかし、getRemoteAddr()を使用することはできません。私のリクエストとレスポンスはxml形式だからです。

REST service.Tomcatserverでpostメソッドを使用しました。xml形式でリクエストを送信しました。

IPアドレスを取得するにはどうすればよいですか?

11
Ami

JAX-RSを使用していると仮定します。

@GET
Produces("application/xlm")
public String getData(@Context HttpServletRequest request){
   String ip = request.getRemoteAddr();
}

@Contextアノテーションを使用すると、のインスタンスを挿入できます

  • javax.ws.rs.core.HttpHeaders、
  • javax.ws.rs.core.UriInfo、
  • javax.ws.rs.core.Request、
  • javax.servlet.HttpServletRequest、
  • javax.servlet.HttpServletResponse、
  • javax.servlet.ServletConfig、
  • javax.servlet.ServletContext、および
  • javax.ws.rs.core.SecurityContextオブジェクト。
34
Edwin Dalorzo

リクエストがxml/json形式の場合でも、IPアドレスは HTTPリクエストヘッダー にあるため、request.getRemoteAddr();を使用してリモート/クライアントマシンアドレスを取得します。

0

リクエスト(この場合はxml)の形式(またはコンテンツタイプ)に関係なく、IPアドレスは、xmlペイロード(リクエスト)の送信に使用されるリクエストとともに提供されます。したがって、リクエストを確認するのが最善の方法です。

0
TheWhiteRabbit