Как передать учетные данные пользователя для загрузки файлов с помощью apache commons FileUtils?
Я использую аутентификатор, как показано ниже, но, похоже, он не работает. Он даже не жалуется на плохие учетные данные, поэтому похоже, что мой аутентификатор игнорируется. Я продолжаю получать 403.
import java.net.Authenticator;
import java.net.PasswordAuthentication;
public class MyAuthenticator extends Authenticator {
private static String username = "myUser";
private static String password = "myPass";
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication (username,
password.toCharArray());
}
}
Затем в основном:
public static void main( String[] args )
{
// Install Authenticator
Authenticator.setDefault(new MyAuthenticator());
try {
FileUtils.copyURLToFile((new URL("https://example.com/api/core/v3/stuff/611636/data?v=1"),
new File("d:\\example\\dir1\\subdir1\\myFile.tar"));
} catch (IOException e) {
e.printStackTrace();
}
}
Я могу загрузить через почтальона, используя правильные учетные данные. Я могу загружать незащищенные файлы без использования учетных данных с помощью FileUtils.
http://username:[email protected]
Изменить: вы проверили, как выглядит запрос к вашей цели? Попробуйте отладить ваш URL-запрос, и вы увидите, передает ли ваш аутентификатор что-то или нет. Также: проверьте документациюcopyURLToFile()
-методов. Вы также можете передать параметры тайм-аута, что было бы лучшим решением, потому что, если тайм-аут не установлен, этот метод будет работать вечно. - person Goot   schedule 17.09.2017