如何获取请求客户机的SOAP的源IP?
您如何获得发送肥皂请求的客户机的源IP,用户名,密码等?是否有任何这些细节可以用于记录目的?如何获取请求客户机的SOAP的源IP?
我正在使用Java来处理传入的SOAP请求。该服务只需添加2个号码并正在工作,但我只需要获取一些客户详细信息。
感谢,Lavanya
我不是苏特我完全理解你获得的用户名和客户机的密码的想法。 通常Soap看Soap Header时,它们应该携带认证信息(可能是用户名,密码或某种安全toke)。 对于IP,你的Soap是通过Http来传递的,因此当你收到你的请求时,你可以试着看看你的Http头文件,看看它给你的信息。虽然我从来没有试图从它获取客户端的IP,但它可能在HTTP标头中。
您正在使用什么肥皂堆栈。如果你将它作为一个使用轴的战争文件进行部署,这很容易做到。你需要掌握httprequestobject并调用HTTPServletRequest.getRemoteAddr()方法。
该服务以.jar文件运行。 然后我使用我的WSDL文件来创建和启动请求。 – user450937 2010-04-15 19:00:24
如果您在使用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();
}
}
将返回类似:在API
IP: 127.0.0.1, Port: 2636, Host: localhost
查找的方法,其余。基本上,一旦你有你的HttpServletRequest
对象,其余的很容易。
这个答案应该被接受。我用这种方法,它完美的作品! – membersound 2012-08-08 16:29:05
我正在使用以下方法,但我没有发现它正常工作。你有没有使用上述类的例子。这将是非常有帮助的。 – Saikat1529 2017-11-14 09:37:14
@ Saikat1529鉴于这个答案是7岁以上,我建议你问一个新问题 – Catchwa 2017-11-14 22:33:52
我算出的溶液象下面 -
@Endpoint
public class DataEndpoints {
....
....
private HttpServletRequest httpServletRequest;
@Autowired
public void setRequest(HttpServletRequest request) {
this.httpServletRequest = request;
}
@PayloadRoot(namespace = employeeNS, localPart = "syncRelation")
@ResponsePayload
public SyncRelationResponse dataSync(@RequestPayload SyncOrderRelation request) {
String incoming = "IP Address -> " + this.httpServletRequest.getRemoteAddr();
}
}
通过使用以下的方法,我可以直接访问的HttpServletRequest。然后我可以访问我需要的所有数据。
我希望它能在这方面帮助别人。
看起来像我将不得不尝试使用该HTTP头对象。有没有像默认情况下通过的头文件中的元数据,还是严格地把它放在头文件中? – user450937 2010-04-15 19:03:33