当前位置: 首页 > 面试题库 >

使用Java从Internet下载文件:如何进行身份验证?

杨鸿畅
2023-03-14
问题内容

感谢使用此线程如何使用Java从Internet下载和保存文件?
我知道如何下载文件,现在的问题是我需要在我要下载的服务器上进行身份验证。这是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方法获得问题的可接受答案,但是可以肯定,它适用于老式方法,即该方法的答案。

在Authenticator类实现中,您可能将使用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;
}

然后将其注册到main方法中(或在调用URL之前的某处):

Authenticator.setDefault(new MyAuthenticator(properties));

用法很简单,但是我发现API令人费解,并且对于您通常如何看待这些事情有点倒退。非常典型的单例设计。



 类似资料:
  • 问题内容: http://www.example.com/information.asp我需要获取一个在线文件(例如),并将其保存到目录中。我知道有几种方法可以逐行捕获和读取在线文件(URL),但是有没有一种方法可以使用Java下载和保存文件? 问题答案: 可以使用 Java NIO : 使用是可能不是一个简单的循环从源信道的读取和写入这个频道有效得多。许多操作系统可以直接将字节从源通道传输到文件

  • 有一个联机文件(如)我需要抓取并保存到目录中。我知道有几种方法来抓取和读取在线文件(URL),逐行,但有没有一种方法只是下载和保存文件使用Java?

  • 假设我们有以下部分的web安全配置:

  • 我有一个节点项目 我试过的密码- 运行此命令时,当secret_password错误时,它会正确显示,但当它正确时,它只显示一个单词swagger,表示swagger。io链接。 我搜索了一下,但是没有得到任何关于这个的信息或者例子。我错过了什么吗?

  • 我正在尝试编写一个简单的后端来访问我的Google Cloud Firestore,它位于Google Kubernetes引擎中。在我的本地计算机上,我使用以下代码对Firestore进行身份验证,详细内容见谷歌文档。 这将拉取GOOGLE_APPLICATION_CREDENTIALS环境变量,并用我的填充它,这是我通过使用角色创建服务号获得的。 所以,在本地,我的代码运行良好。我可以到达我的

  • 问题内容: 我们的Web应用程序之一是使用基本身份验证,并使用AngularJS进行构建。为了测试该应用程序,我使用了Protractor,后者使用Selenium与浏览器进行通信。 在Chrome中,一切正常,进行基本身份验证很容易: 在Internet Explorer下,带有密码和用户名的URL被认为存在安全风险,因此是不允许的。在Internet Explorer 9之前,可以在注册表中关