我正在尝试为Tomcat应用程序测试servlet过滤器。为此,我使用的是Spring提供的MockHttpServletRequest。
我这样设置:
MockHttpServletRequest request = new MockHttpServletRequest();
request.setMethod("POST");
request.setRemoteHost("mycompany.com");
request.setRequestURI("/myapp.php");
request.setSecure(true);
但是当我以下:
System.out.println(request.getRequestURL());
产生:
http://localhost/myapp.php
。另一方面,如果我明确要求设置的一个字段,例如:System.out.println(request.getRemoteHost());
我得到:
mycompany.com
这里发生了什么?我如何获得
getRequestURL
来产生我真正想要的东西:https://mycompany.com/myapp.php
最佳答案
Sotirios关于serverName
与remoteHost
是正确的;但是,这种变化只会使您部分地陷入困境。
以下将实现您的目标:
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("https");
request.setServerName("mycompany.com");
request.setServerPort(443);
request.setRequestURI("/myapp.php");
System.out.println(request.getRequestURL());
// Prints: https://mycompany.com/myapp.php
问候,
山姆