Скачать файл .xls с URL с аутентификацией - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь загрузить файл Excel с веб-сайта с аутентификацией. Обычно, если я вручную копирую ссылку в веб-браузер, появляется всплывающее окно с сообщением «Файл.xls Сохранить или Отменить». Не знаете, как можно загрузить этот файл программно через Android.

Я просто не могу заставить его работать. Я смог загрузить файл Excel по ссылке, но когда я открыл файл, он не поддерживается. Я понял, что просто создаю файл, и мне нужно войти в систему, чтобы иметь возможность загрузить файл.

Итак, первая проблема: я попытался использовать следующий код для аутентификации, и я даже не уверен, вошел ли я в систему или она сработала;

public void CheckAuthenticate(){

    try {
        // Sets the authenticator that will be used by the networking code
        // when a proxy or an HTTP server asks for authentication.
        Authenticator.setDefault(new CustomAuthenticator());
        URL url = new URL("http://*****.com/account/login");
        // read text returned by server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String line;
        while ((line = in.readLine()) != null) {
            //System.out.println(line);
        }
        in.close();
    }
    catch (MalformedURLException e) {
        System.out.println("Malformed URL: " + e.getMessage());
    }
    catch (IOException e) {
        System.out.println("I/O Error: " + e.getMessage());
    }
}

public static class CustomAuthenticator extends Authenticator {
    // Called when password authorization is needed
    protected PasswordAuthentication getPasswordAuthentication() {
        // Get information about the request
        String prompt = getRequestingPrompt();
        String hostname = getRequestingHost();
        InetAddress ipaddr = getRequestingSite();
        int port = getRequestingPort();
        String email = "XXXXXXX";
        String password = "XXXXXXX";

        System.out.println("prompt: " + prompt);
        System.out.println("hostname: " + hostname);
        System.out.println("requesting site: " + ipaddr);

        // Return the information (a data holder that is used by Authenticator)
        return new PasswordAuthentication(email, password.toCharArray());

    }
}

Вторая проблема заключается в том, что я не уверен, правильно ли я выполняю следующий код:

 URL url = new URL(downloadUrl);//Create Download URl
            HttpURLConnection c = (HttpURLConnection) url.openConnection();//Open Url Connection
            c.setRequestMethod("GET");//Set Request Method to "GET" since we are grtting data
            c.connect();//connect the URL Connection
...