Метод URL.openstream () не может прочитать по ссылке с & - PullRequest
0 голосов
/ 22 марта 2019

У меня есть ссылка на .csv, которая выглядит следующим образом:

http://website.com/data.csv?since=2019-03-21T00:00Z&sensor=xxx

Мой метод получает эту ссылку как URL

BufferedReader in = new BufferedReader(new InputStreamReader(URL.openStream()));

Проблема в том, что он неправильно загружает .csv.Я понял, что если я добавлю «amp;»после & это работает правильно.Есть ли простой способ решить это?

1 Ответ

0 голосов
/ 22 марта 2019

Я нашел решение: https://www.mkyong.com/java/java-httpurlconnection-follow-redirect-example/

public URL getFinalUrl(URL url) {
    try {
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(5000);
        conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");
        conn.addRequestProperty("User-Agent", "Mozilla");
        conn.addRequestProperty("Referer", "google.com");

        boolean redirect = false;

        int status = conn.getResponseCode();
        if (status != HttpURLConnection.HTTP_OK) {
            if (status == HttpURLConnection.HTTP_MOVED_TEMP
                    || status == HttpURLConnection.HTTP_MOVED_PERM
                    || status == HttpURLConnection.HTTP_SEE_OTHER)
                redirect = true;
        }
        String newUrl = null;
        if (redirect) {
            // get redirect url from "location" header field
            newUrl = conn.getHeaderField("Location");

            // get the cookie if need, for login
            String cookies = conn.getHeaderField("Set-Cookie");

            // open the new connnection again
            conn = (HttpURLConnection) new URL(newUrl).openConnection();
            conn.setRequestProperty("Cookie", cookies);
            conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");
            conn.addRequestProperty("User-Agent", "Mozilla");
            conn.addRequestProperty("Referer", "google.com");
        }
        System.out.println(newUrl);
        return new URL(newUrl);
    } catch (IOException ioe) {
        System.out.println("Wrong sensor URL");
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...