[英]How to get IP address of incoming request SOAP
我有以下課程,如何獲取傳入請求源的IP地址? 我已經在互聯網上檢查了幾種解決方案,但是找不到一些合適的解決方案,如果您需要有關我可以添加的項目結構的更多信息,謝謝
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/ws/*");
}
@Bean(name = "doSomething")
public DefaultWsdl11Definition defaultValidateWsdl11Definition(XsdSchema validateSchema) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("ValidatePort");
wsdl11Definition.setLocationUri("/ws");
wsdl11Definition.setTargetNamespace("http://www.org.com/validate");
wsdl11Definition.setSchema(validateSchema);
return wsdl11Definition;
}
@Bean(name = "doSecond")
public DefaultWsdl11Definition defaultActionWsdl11Definition(XsdSchema actionSchema) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("ActionPort");
wsdl11Definition.setLocationUri("/ws");
wsdl11Definition.setTargetNamespace("http://www.org.com/action");
wsdl11Definition.setSchema(actionSchema);
return wsdl11Definition;
}
@Bean
public XsdSchema validateSchema() {
return new SimpleXsdSchema(new ClassPathResource("doSomething.xsd"));
}
@Bean
public XsdSchema actionSchema() {
return new SimpleXsdSchema(new ClassPathResource("doSecond.xsd"));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.org.com/doSomething"
targetNamespace="http://www.org.com/doSomething" elementFormDefault="qualified">
<xs:element name="getActionRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Username" type="xs:string"/>
<xs:element name="Password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getDoSomethingResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="Code" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
正如Tibrogargan所暗示的那樣,它應該在標題中。 您可以像這樣注入您的Request
@Autowired
private HttpServletRequest request;
並獲得這樣的IP地址
protected String getIpAddress() {
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
return ipAddress;
}
如果代理沒有掩蓋,您可能有機會使用X-FORWARDED-FOR
標頭獲得原始發件人的IP地址。 否則, getRemoteAddr()
應該這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.