HttpURLConnection 无法在 Java 测试中正确捕获 HTTP 302

HttpURLConnection unable to capture HTTP 302 correctly in a Java test

提问人:p0tta 提问时间:8/11/2023 更新时间:8/11/2023 访问量:29

问:

我正在尝试为重定向到另一个 URL 的 URL /rdrct 编写测试,例如同一主机上的 /test。在应用程序上,重定向工作正常,我在网络检查器中看到 HTTP 302,但是当我编写 Java 测试时,它失败了,并且出现以下错误。

预期:<200>但实际为:<302>

@Test
public void testRedirect() throws Exception { 
    String uri = "http://localhost:" + port + "/rdrct";
    URL url = new URL(uri);

    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setInstanceFollowRedirects(true);
    connection.setRequestProperty("Accept",
        "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,"
        + "image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7");
    connection.connect();
    int responseCode = connection.getResponseCode();
    assertEquals(responseCode, 302); 
}

我错过了什么或做错了什么?

java junit httpurl连接 http-redirect http-status-code-302

评论

0赞 tgdavies 8/11/2023
次要的一点,第一个参数应该是期望值,这将使消息说出它应该说的话。assertEquals
1赞 tgdavies 8/11/2023
我认为您问题的答案是正在跟踪重定向,并返回 200 状态。/test
0赞 Samuel Marchant 8/11/2023
200 是“好的”,302 有点奇怪,但对于某些人来说,与 200 re: developer.mozilla.org/en-US/docs/Web/HTTP/Status/302 相同
0赞 user207421 8/11/2023
@SamuelMarchant 不,不是。302 表示重定向到另一个标头中指定的 URL。200 表示成功,并伴随着所需的有效载荷。您的源代码不支持您的断言。
1赞 user207421 8/11/2023
@OP 当您跟踪重定向时,您不会看到 302。如果您想看到它,请不要将连接设置为遵循重定向,在这种情况下,您必须自己关注它们。

答: 暂无答案