一千萬個為什麽

搜索

如何獲取SOAP請求客戶端計算機的源IP?

你如何獲得發送soap請求的客戶機的源IP,用戶名,密碼等?是否存在可以用於記錄目的的任何這些細節?

我正在使用Java來處理傳入的SOAP請求。該服務只添加2個號碼並且正在運行,但我只需要獲取一些客戶端詳細信息。

謝謝,拉瓦尼亞

最佳答案

如果您正在使用JAX-WS,請註入WebServiceContext,如下所示:

import javax.annotation.Resource
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;


@WebService()
public class Test
{
  @Resource WebServiceContext context;

  @WebMethod(operationName = "getInfo")
  public String getInfo()
  {
    HttpServletRequest request = (HttpServletRequest)context.getMessageContext().get(MessageContext.SERVLET_REQUEST);
    return "IP: "+request.getRemoteAddr()+", Port: "+request.getRemotePort()+", Host: "+request.getRemoteHost();
  }
}

將返回如下內容:

IP:127.0.0.1,Port:2636,Host:localhost

其余的請查看 API 的方法。基本上,一旦你有了 HttpServletRequest 對象,剩下的就很簡單了。

轉載註明原文: 如何獲取SOAP請求客戶端計算機的源IP?