Próbuję napisać program do automatycznego testowania na mojej aplikacji internetowej. Aby to osiągnąć, otwieram połączenie za pomocą HttpURLConnection.Java HttpURLConnection nie łączy się, gdy wywołuję connect()
Jedna ze stron, które próbuję przetestować, wykonuje przekierowanie 302. Mój kod testowy wygląda następująco:
URL currentUrl = new URL(urlToSend);
HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection();
connection.connect();
system.out.println(connection.getURL().toString());
Więc powiedzmy, że urlToSend jest http://www.foo.com/bar.jsp, i że ta strona przekierowuje do http://www.foo.com/quux.jsp. Moje oświadczenie println powinno wydrukować http://www.foo.com/quux.jsp, prawda?
NIEPRAWIDŁOWE.
Przekierowanie nigdy się nie dzieje i wypisuje oryginalny adres URL. Jednakże, jeśli zmienię, wyłączyłem linię connection.connect() z wywołaniem connection.getResponseCode(), to działa w magiczny sposób.
URL currentUrl = new URL(urlToSend);
HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection();
//connection.connect();
connection.getResponseCode();
system.out.println(connection.getURL().toString());
Dlaczego widzę to zachowanie? Czy robię coś złego?
Dzięki za pomoc.
Dziękuję, wygląda na to, że tak jest! – sangfroid
Dziękuję za to! Próbowałem zrozumieć, dlaczego ludzie wydają getInputStream() i takie, nie wywołując nigdy connect(). Właśnie mi to wyjaśniłeś. – Renatinn