मैं एक समाधान खोजने की कोशिश कर रहा हूं जो एक्स-फॉरवर्ड-* हेडर का उपयोग करके एक नया लिंक तैयार करेगा।

public class ApiUriBuilderTest {

    private MockHttpServletRequest request = new MockHttpServletRequest();
    private HttpRequest httpRequest = new ServletServerHttpRequest(request);


    @Before
    public void setUp() throws Exception {
        request.setScheme("http");
        request.setServerName("localhost");
        request.setServerPort(80);
        request.setRequestURI("/mvc-showcase");
        request.addHeader("X-Forwarded-Proto", "https");
        request.addHeader("X-Forwarded-Host", "84.198.58.199");
        request.addHeader("X-Forwarded-Port", "443");

        request.setContextPath("/mvc-showcase");
        request.setServletPath("/app");
        request.setRequestURI("/mvc-showcase/app/uri/of/request?hello=world&raw#my-frag");

        httpRequest = new ServletServerHttpRequest(request);

    }

    @Test
    public void test() {
        String uri = ForwardedContextPathServletUriComponentsBuilder.fromRequest(request).build().toUriString();
        assertThat(uri, is("https://84.198.58.199:443"));

    }

    @Test
    public void test_uri_components_builder() throws URISyntaxException {
        UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
        assertEquals("https://84.198.58.199:443", result.toString());
    }

लेकिन वापसी मूल्य है "https:// 84.198.58.199/mvc-showcase/app/uri/of/request?hello=world&raw#my-frag"। मैं संदर्भ-पथ, सेटवलेट-पथ से कैसे छुटकारा पा सकता हूं और यूरी का अनुरोध कैसे कर सकता हूं?

1
Daria Bulanova 18 अप्रैल 2019, 14:27

1 उत्तर

सबसे बढ़िया उत्तर
@Test
public void test() {
    String uri = ServletUriComponentsBuilder.fromRequest(request).replacePath("relativePath").replaceQuery(null).build().toUriString();
    assertThat(uri, is("https://84.198.58.199:8080/relativePath"));

}

मदद की।

0
Tiw 20 अप्रैल 2019, 00:32