如何在Rest Assured中跟随重定向?

6
我有一个Spring Boot应用程序,其中一个控制器根据POST参数重定向到页面。
我正在创建测试用例,希望断言重定向的页面,但我无法从Rest Assured响应中获取重定向的HTML。
    @Test
    public void test() throws Exception {

        Response response = given()
            .param("name", "myName")
        .when()
            .redirects().follow(true).redirects().max(100)
            .post("/myPath");      // it will redirect to another page


        // I want to print from <html> to </html> of the redirected page
        System.out.println("returned full html /n" + response.getBody().asString());  
    }

我收到了302的响应码以及响应头中重定向页面的位置。

11:38:03.291 [main] DEBUG org.apache.http.headers - << "Location: http://localhost:8080/myRedirectPage[\r][\n]"
.........
11:38:03.291 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Receiving response: HTTP/1.1 302 
11:38:03.291 [main] DEBUG org.apache.http.headers - << HTTP/1.1 302 
2个回答

8
我曾遇到类似的问题,rest assured重定向不支持状态代码为302和307的“post”请求。我们需要将其改为使用状态代码303的“get”请求或“post”请求。更多信息,请点击这里

尝试了这种方法,但是不起作用。我得到了200的响应,但输出是一个HTML文件,而不是预期的JSON。在Fiddler/Postman中,API可以正确返回JSON,但在RestAssured中却不行。 - MansoorShaikh
我们无法将状态码更改为303。有什么解决办法吗?我们卡住了。尝试捕获cookie、头文件并使用头文件、cookie和参数显式调用重定向url,但仍然没有运气。获取的是html而不是json。我本来希望restassured库能像fiddler/postman一样自动完成这个操作。 - MansoorShaikh

1
尝试在URL中使用IP地址代替“localhost”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接