java

位置:IT落伍者 >> java >> 浏览文章

使用JAVA请求需要Basic身份验证的网页


发布日期:2023年11月14日
 
使用JAVA请求需要Basic身份验证的网页

通过JAVA抓取页面时有些页面会返回(Unauthorized)响应状态码和wwwauthenticate响应头来要求客户端进行身份认证这种认证有两种方式BASIC和DIGESTBASIC验证要求客户端对用户名和密码进行BASE编码后传送给服务器DIGEST的认证方式的细节比较复杂会经过一系列的加密所以很难被破译

JAVA提供一个用于启用身份认证的类可以支持HTTP协议中的多个认证方式这个类是Authenticator使用方法如下

Java 代码

package comxixuyishi;

import javaioBufferedReader;

import javaioInputStream;

import javaioInputStreamReader;

import Authenticator;

import PasswordAuthentication;

import URL;

public class RunHttpSpnego {

static final String kuser = username; // 用户名

static final String kpass = password; // 密码

static class MyAuthenticator extends Authenticator {

@Override

public PasswordAuthentication getPasswordAuthentication() {

return (new PasswordAuthentication(kuser kpasstoCharArray()));

}

}

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

AuthenticatorsetDefault(new MyAuthenticator());

URL url = new URL(args[]);

InputStream ins = urlopenConnection()getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(ins));

String str;

while ((str = readerreadLine()) != null)

Systemoutprintln(str);

}

}

只需要创建一个继续自Authenticator的类并且重写其中的getPasswordAuthentication()方法将用户名和密码放入方法中这样在需要使用身份认证的地方实现这个类就可以了

               

上一篇:Java远程方法调用(1)

下一篇:java编程之银行调度系统