Я пытаюсь написать программу, которая читает HTML-код исходного кода веб-сайта. http://judgephilosophies.wikispaces.com. Я написал простой Java-код, который читает и выводит исходный код, но он просто выводит «null».Вот странная вещь, хотя - если я заменю "http://judgephilosophies.wikispaces.com" в коде на любой другой веб-сайт, он будет работать просто отлично. Похоже, что только для сайтов в домене wikispaces.com программа не работает, и яЯ совершенно сбит с толку относительно того, почему. Код ниже. Помощь очень ценится.
import java.io.*; import java.net.*; public class AccessWebExample { public static void main (String[] args) throws Exception { //Create reader to access html source code URL url = new URL ("http://judgephilosophies.wikispaces.com/"); InputStreamReader isr = new InputStreamReader (url.openStream()); BufferedReader reader = new BufferedReader (isr); //Read and print the text do { System.out.println(reader.readLine()); } while(reader.readLine() != null); } }
Используя wget из командной строки, вы найдете:
wget
broach@broach-laptop:~$ wget http://judgephilosophies.wikispaces.com/ --2011-04-23 14:50:31-- http://judgephilosophies.wikispaces.com/ Resolving judgephilosophies.wikispaces.com... 208.43.192.33, 75.126.104.177 Connecting to judgephilosophies.wikispaces.com|208.43.192.33|:80... connected. HTTP request sent, awaiting response... 302 Found Location: https://session.wikispaces.com/1/auth/auth?authToken=e8ad55c0e2701a0e7da89807255609da [following]
Он перенаправляет (на самом деле, еще пару раз).Ваше голое URLConnection не справляется с этим.Код ответа находится в заголовках, поэтому ваша программа в настоящее время печатает ноль.
Вы действительно должны использовать HttpUrlConnection , поскольку он может обрабатывать перенаправления для вас.Чтобы сделать это с URL, вам потребуется посмотреть на возвращенные заголовки и действовать на основе кодов ответов HTTP (что и делает HttpURLConnection)
URL
HttpURLConnection
Сделайте HTTP-трассировку, используя Wireshark или что-нибудь подобное, и сравните.Вероятно, это вопрос файлов cookie или заголовков, если простое URLConnection действует не так, как браузер.