使用java从互联网下载文件:如何认证?

前端之家收集整理的这篇文章主要介绍了使用java从互联网下载文件:如何认证?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
感谢这个线程 How to download and save a file from Internet using Java?
我知道如何下载文件,现在我的问题是我需要在我正在下载的服务器上进行身份验证.这是一个到subversion服务器的http接口.我需要查找哪个领域?

使用最后一个注释中发布的代码,我得到这个异常:

java.io.IOException: Server returned HTTP response code: 401 for URL: http://myserver/systemc-2.0.1.tgz
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1305)
    at java.net.URL.openStream(URL.java:1009)
    at mypackage.Installer.installSystemc201(Installer.java:29)
    at mypackage.Installer.main(Installer.java:38)

谢谢,

解决方法

您实现了 Authenticator类并注册.链接中的javadocs解释了如何.

我不知道这是否与nio方法一致,得到了对该问题的接受的答案,但它确实适用于那种那种老式的方式.

在认证器类实现中,您可能要使用PasswordAuthentication并覆盖您的Authenticator实现的getPasswordAuthentication()方法来返回它.这将是通过您需要的用户名和密码的类.

根据您的要求,以下是一些示例代码

public static final String USERNAME_KEY = "username";
public static final String PASSWORD_KEY = "password";
private final PasswordAuthentication authentication;

public MyAuthenticator(Properties properties) {
    String userName = properties.getProperty(USERNAME_KEY);
    String password = properties.getProperty(PASSWORD_KEY);
    if (userName == null || password == null) {
        authentication = null;
    } else {
        authentication = new PasswordAuthentication(userName,password.tocharArray());
    }
}

protected PasswordAuthentication getPasswordAuthentication() {
    return authentication;
}

并且您以主要方法(或在您调用URL之前沿线的某个地方)注册它:

Authenticator.setDefault(new MyAuthenticator(properties));

用法很简单,但是我发现API对于你通常如何思考这些东西而言是一个倒塌的方式.非常典型的单身设计.

猜你在找的Java相关文章