a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 149|回复: 0

[专业语言] JAVA认证:使用JAVA请求需要Basic身份验证的网页完整代码解析

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
这种认证有两种体例:BASIC和DIGEST,BASIC验证要求客户端对用户名和密码进行BASE64编码后传送给处事器。DIGEST的认证体例的细节斗劲复杂,会经由一系列的加密,所以很难被破译。   JAVA供给一个用于启用身份认证的类,可以撑持HTTP和谈中的多个认证体例,这个类是java.net.Authenticator,使用体例如下:
* ]5 M( S+ ~" |6 N; L6 i  Java 代码
, ~  `# H; }2 \' _4 z  1.package com.xixuyishi;
  Y1 d: ?2 M& i* _1 [  2.' ~: E; B: Y8 ~8 L
  3.import java.io.BufferedReader;+ R% t! F: z+ z
  4.import java.io.InputStream;
: R- x* I+ Z( y/ \& y- p  5.import java.io.InputStreamReader;+ o+ b* l9 n- z4 ^! w5 B6 S4 z
  6.import java.net.Authenticator;
" i. A  u; Q; b3 E  7.import java.net.PasswordAuthentication;
" P! ^" v& l" G- c% U  8.import java.net.URL;
$ _/ b& p' z/ O( W  j7 E4 Y  9.7 z- o2 B4 q! P% V) l( [8 O
  10.public class RunHttpSpnego {# ~9 h. [8 }: {; y4 H
  11.& D' w+ a9 l( m1 [3 l) ~. }# Z
  12.    static final String kuser = "username"; // 用户名
8 j+ e0 \. y7 x0 X* I  13.    static final String kpass = "password"; // 密码. O+ P- Z( ~# L& q- G* ^
  14.    static class MyAuthenticator extends Authenticator {- I6 {+ G0 }% D' ~. [( H& n

* U  T  _2 w  D; G$ V) F$ h' ^        16.        @Override6 ]& ]# X. X- e  [) N7 Y9 o: L
  17.        public PasswordAuthentication getPasswordAuthentication() {
* P: B8 f& J6 c3 o/ b  18.            return (new PasswordAuthentication(kuser, kpass.toCharArray()));
3 Y3 v  s' v; `2 q5 U; u1 c  19.        }
6 r; {1 D0 D4 D6 [  20.    }7 T; k8 f) d# @) M/ k
  21.) D2 F  U, q0 P; z: p; P
  22.    public static void main(String[] args) throws Exception {
& D, a# e* d: v0 ]4 }9 V  23.        Authenticator.setDefault(new MyAuthenticator());) U) u2 ^1 R4 m7 x2 m5 ?- a
  24.        URL url = new URL(args[0]);
  J. ?- q% h' D/ s) q  25.        InputStream ins = url.openConnection().getInputStream();& L: z2 U  W* ]( [* y; @
  26.        BufferedReader reader = new BufferedReader(new InputStreamReader(ins));8 J9 a% G; e6 R& i0 C/ R$ f8 F
  27.        String str;2 M, c$ i' G" \) |8 z3 o
  28.        while ((str = reader.readLine()) != null)
' p) t4 \. V; a6 [7 a! X  X4 \  29.            System.out.println(str);% p1 h0 Y7 n% a5 `5 Q! a5 g
  30.    }! u  n/ y( w0 a- n; J) M
  31.}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-8 04:30 , Processed in 0.209852 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表