MockHttpServletRequest

MockHttpServletRequest

我正在尝试为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关于serverNameremoteHost是正确的;但是,这种变化只会使您部分地陷入困境。

以下将实现您的目标:

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


问候,

山姆

09-28 12:49