Как получить все содержимое веб-страницы на Java? - PullRequest
1 голос
/ 20 ноября 2011

Простой вопрос, как мне получить содержимое http://www.minecraft.net/haspaid.jsp?user=somethinghere? У меня будет список имен пользователей в текстовом файле, и я хочу просмотреть все из них и посмотреть, заплатили они или нет. Содержание этой веб-страницы будет либо истинным, либо ложным. Нет HTML, ничего, кроме «правда» или «ложь». Как мне получить этот контент? Мне не нужно ничего особенного. Это первый раз, когда я имел дело с веб-материалами на Java.

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Вы на самом деле спрашиваете, как выполнить HTTP GET, используя Java API. Вот фрагмент кода.

URL url = new URL("http://www.minecraft.net/haspaid.jsp?user=somethinghere");
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
   // parse your content here
}
1 голос
/ 20 ноября 2011

HttpClient или пружина RestTemplate может выполнять эту работу.

Нечто подобное с пружиной RestTemplate:

public class Foo {
    /** 
     * Production HTTP end point.
     */ 
    private static final String BASE_URL = "http://www.minecraft.net/haspaid.jsp";

    /**
     * {@link RestTemplate} for HTTP access.
     */
    @Autowire
    private RestTemplate restTemplate;

    /**
     * Constructor.
     */
    public Foo() {
        this.baseUrl = BASE_URL;
    }

    /**
     * Constructor for testing purposes.
     *
     * @param baseUrl HTTP end-point url to use.
     * @param restTemplate {@link RestTemplate} to use (a mock probably).
     */
    protected Foo(final String baseUrl, final RestTemplate restTemplate) {
        this.baseUrl = baseUrl;
        this.restTemplate = restTemplate;
    }

    /**
     * Check if user has paid.
     *
     * @param userName Name of the user to check.
     * @return true if user has paid
     */
    public boolean hasPaid(final String userName) {
        if (userName == null) {
            return false;
        }

        final String result = restTemplate.getForObject(this.baseUrl + 
            "?user={user}", String.class, userName);

        return Boolean.valueOf(result);
    }
}
...