2013-01-10 7 views
10

Ho scritto il servizio web di Rest nel mio progetto. La chiamata al servizio web potrebbe provenire da diverse macchine. Quindi ho bisogno di trovare l'indirizzo IP tramite il webservice REST.Come ottenere l'indirizzo IP remoto/client usando il servizio web RESTful in java?

Da questo linkrequest.getRemoteAddr() per utilizzare questo.

Ma non posso usare getRemoteAddr(). Perché la mia richiesta e risposta sono in formato xml.

Ho usato il metodo post nel servizio REST. Server Tom. Ho richiesta di invio come formato xml.

Come posso ottenere l'indirizzo IP?

+0

puoi dire quale tecnologia/quadro stai usando? – TheWhiteRabbit

risposta

31

si Supponendo che stanno usando JAX-RS:

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

Il @Context di annotazione consente di iniettare le istanze di

  • 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, e
  • oggetti javax.ws.rs.core.SecurityContext.
0

Indipendentemente dal formato (o tipo di contenuto) della richiesta (in questo caso xml) L'indirizzo IP viene fornito con la richiesta tramite la quale viene inviato il payload xml (richiesta). Quindi, verificare con la richiesta è il modo migliore.

+0

i dati della richiesta (xml) sono sempre racchiusi nella richiesta HTTP – TheWhiteRabbit

0

Anche se la richiesta è in formato xml/json, si otterrà l'indirizzo della macchina remota/client usando request.getRemoteAddr(); perché l'indirizzo IP si trova in HTTP Request header.

+0

Non riesco a ottenere getRemoteAddr() tramite l'oggetto di richiesta xml. – Ami