项目中遇到从系统A登陆到系统B的问题,登陆验证用的是Spring Security
当配置了Spring Security 后可以可以直接在跳转的时候 传递用户名 密码即可实现登陆
http://${projectHost}/j_spring_security_check?j_username=${userName}&j_password=${password}"
Spring Security的配置方法找度娘
复制:
web登陆无非就是网页获取,cookie 的管理,post和get方式的模拟。
1.网页内容获取
java.io.InputStream in; java.net.URL url = new java.net.URL(www.xyz.com/content.html); java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection(); connection = (java.net.HttpURLConnection) url.openConnection(); //模拟成IE connection.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)"); connection.connect(); in = connection.getInputStream(); java.io.BufferedReader breader = new BufferedReader(new InputStreamReader(in , "GBK")); String str=breader.readLine()); while(st != null){ System.out.println(str); str=breader.readLine()); }
2.cookie管理
1.直接的方式
取得cookie:
HttpURLConnection huc= (HttpURLConnection) url.openConnection(); InputStream is = huc.getInputStream(); // 取得sessionID. String cookieVal = hc.getHeaderField("Set-Cookie"); String sessionId; if(cookieVal != null) { sessionId = cookieVal.substring(0, cookieVal.indexOf(";")); }
发送设置cookie:
HttpURLConnection huc= (HttpURLConnection) url.openConnection(); if(sessionId != null) { huc.setRequestProperty("Cookie", sessionId); } InputStream is = huc.getInputStream();
2.利用的jcookie包(http://jcookie.sourceforge.net/ )
获取cookie:
URL url = new URL("http://www.site.com/"); HttpURLConnection huc = (HttpURLConnection) url.openConnection(); huc.connect(); InputStream is = huc.getInputStream(); Client client = new Client(); CookieJar cj = client.getCookies(huc);
新的请求,利用上面获取的cookie:
url = new URL("http://www.site.com/"); huc = (HttpURLConnection) url.openConnection(); client.setCookies(huc, cj);
3.post方式的模拟
URL url = new URL("www.xyz.com"); HttpURLConnection huc = (HttpURLConnection) url.openConnection(); //设置允许output huc.setDoOutput(true); //设置为post方式 huc.setRequestMethod("POST"); huc.setRequestProperty("User-Agent","Mozilla/4.7 [en] (Win98; I)"); StringBuffer sb = new StringBuffer(); sb.append("userName="+userNme); sb.append("&password="+password); //post信息 OutputStream os = huc.getOutputStream(); os.write(sb.toString().getBytes("GBK")); os.close(); BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream())) huc.connect(); String line = br.readLine(); while(line != null){ System.out.printli(line); line = br.readLine(); }