Странная проблема доступа к веб-странице с Java - PullRequest
0 голосов
/ 23 апреля 2011

Я пытаюсь написать программу, которая читает 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);
    }
}

Ответы [ 2 ]

0 голосов
/ 23 апреля 2011

Используя 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)

0 голосов
/ 23 апреля 2011

Сделайте HTTP-трассировку, используя Wireshark или что-нибудь подобное, и сравните.Вероятно, это вопрос файлов cookie или заголовков, если простое URLConnection действует не так, как браузер.

...