使用java从经过身份验证的服务器下载大型文件

使用java从经过身份验证的服务器下载大型文件,java,authentication,fileutils,Java,Authentication,Fileutils,我需要实现从经过身份验证的服务器下载多个文件的功能。但我收到了以下结果,即使通过浏览器访问使下载正常启动(如果经过验证) '服务器返回HTTP响应代码:500' 文件大小应介于7.10 KB和4.8 GB之间 import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.Authenticator; import java.net.Password

我需要实现从经过身份验证的服务器下载多个文件的功能。但我收到了以下结果,即使通过浏览器访问使下载正常启动(如果经过验证)

'服务器返回HTTP响应代码:500'

文件大小应介于7.10 KB和4.8 GB之间

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;

public class Example {

    private static final String URL = "totally_a_valid_url";
    private static final String PATH = "D:\\___Automation\\_TEST";

    public static void main(String[] args) throws IOException {

        Authenticator.setDefault(new MyAuthenticator());

        URL url = new URL(URL);
        File destination = new File(PATH);
        FileUtils.copyURLToFile(url, destination);

    }

    public static class MyAuthenticator extends Authenticator {

        String uName = "not_my_real_usr";
        String uPass = "not_my_password";

        PasswordAuthentication authentication;

        MyAuthenticator() {
            authentication = new PasswordAuthentication(uName, uPass.toCharArray());
        }

        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return authentication;
        }

    }

}

HTTP 500表示服务器有问题。查看服务器日志到底发生了什么。不幸的是,我没有访问服务器日志的权限。使用相同的url,我可以用chrome正常下载文件。我认为请求的方式出了问题。我打赌它不是一个公共URL,你的chrome必须先登录,等等。如果是的话,你需要在你的代码客户端请求中调查和复制cookie、会话、标题。您编写的请求很可能是不完整的。请注意,许多自动化操作需要如此多的会话、cookie和头规范,因此对其进行反向工程比值得的麻烦多。这就是为什么人们使用Selenium来实现您希望直接在浏览器上执行的操作的自动化。我已经使用了Selenium,但有时我会被要求使用headless模式在服务器上运行它,但我在使用headless模式时也遇到了问题=/