你如何获得发送soap请求的客户端机器的源IP,用户名,密码等?是否存在可以用于记录目的的任何这些细节?
我正在使用Java来处理传入的SOAP请求.该服务只添加2个号码并且正在运行,但我只需要获取一些客户端详细信息.
谢谢,拉瓦尼亚
Cat*_*hwa 17
如果您正在使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
将返回如下内容:
IP: 127.0.0.1, Port: 2636, Host: localhost
查看其余方法的API.基本上,一旦你有了你的HttpServletRequest对象,剩下的就很容易了.
我不确定我完全理解您获取客户端计算机的用户名和密码的想法。一般来说,使用 Soap 查看 Soap 标头,它们应该携带身份验证信息(可以是用户名、密码或某种安全令牌)。对于 IP,您的 Soap 是通过 Http 发送的,因此当您收到请求时,您可以尝试查看 Http 标头,看看它为您提供了哪些信息。虽然我从未尝试过从中获取客户端的IP,但它可能存在于HTTP标头中