2013-01-10 42 views
10

Tôi đã viết dịch vụ web Rest trong cuộc gọi dịch vụ web project.The của tôi có thể đến từ máy khác. Tôi cần phải tìm địa chỉ IP thông qua REST webservice.Cách nhận địa chỉ IP từ xa/khách hàng bằng dịch vụ web RESTful trong java?

Từ số này linkyêu cầu.getRemoteAddr() để sử dụng.

Nhưng tôi không thể sử dụng getRemoteAddr(). Bởi vì yêu cầu và phản hồi của tôi là định dạng xml.

Tôi đã sử dụng phương thức bài trong dịch vụ REST.Tomcat server.I đã gửi yêu cầu dưới dạng định dạng xml.

Tôi làm cách nào để có được địa chỉ IP?

+0

bạn có thể cho biết công nghệ/khung bạn đang sử dụng không? – TheWhiteRabbit

Trả lời

31

Giả sử bạn đang sử dụng JAX-RS:

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

Các @Context chú thích cho phép bạn bơm trường hợp của

  • 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, và
  • đối tượng javax.ws.rs.core.SecurityContext.
0

Bất kể định dạng (hoặc loại nội dung) của yêu cầu của bạn (trong trường hợp này là xml) Địa chỉ IP được cung cấp kèm theo yêu cầu của bạn qua đó tải trọng xml (yêu cầu) được gửi. Do đó, việc kiểm tra với Yêu cầu của bạn là cách tốt nhất.

+0

dữ liệu yêu cầu của bạn (xml) luôn được bao bọc trong Yêu cầu HTTP – TheWhiteRabbit

0

Ngay cả khi yêu cầu của bạn ở định dạng xml/json, bạn sẽ nhận được địa chỉ máy từ xa/máy khách bằng cách sử dụng request.getRemoteAddr(); vì Địa chỉ IP nằm trong HTTP Request header.

+0

Tôi không thể lấy đối tượng getRemoteAddr() thông qua xml yêu cầu. – Ami

Các vấn đề liên quan