IOException при загрузке файла, защищенного именем пользователя и паролем в Java - PullRequest
0 голосов
/ 25 января 2020

Проблема:

Я хочу загрузить файл, который лежит на наших школьных серверах с заданным интервалом. Файл. xml, к которому я хочу получить доступ, находится за логином, но вы можете, по крайней мере, в браузере, получить доступ к файлу без использования логина, изменив URL:

https://username:password@subdomain.domain.net/xmlFile.xml

Но Java выдает IOException, если я хочу получить доступ к странице. Другие файлы, такие как этот пример W3 , работают без проблем.

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

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbf.newDocumentBuilder();

URL webServer = new URL(url);
//url is the specified address I want to access.
InputStream stream = webServer.openStream();
Document xmlDatei = docBuilder.parse(stream);

return xmlDatei

Вопрос:

Существуют ли специальные аргументы или функции, которые я могу использовать, чтобы предотвратить это?

1 Ответ

0 голосов
/ 25 января 2020

Попробуйте использовать Basi c Аутентификация для доступа к вашему файлу.

        String webPage = "http://www.myserver.com/myfile.xml";
        String name = "username";
        String password = "password";

        String authString = name + ":" + password;
        byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
        String authStringEnc = new String(authEncBytes);

        URL url = new URL(webPage);
        URLConnection urlConnection = url.openConnection();
        urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);

        try (InputStream stream = urlConnection.getInputStream()) {

            // preparation steps to use docBuilder ....

            Document xmlDatei = docBuilder.parse(stream);

        }
...