java web 登陆解决方法
项目中遇到从系统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.InputStreamin; 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();//设置允许outputhuc.setDoOutput(true);//设置为post方式huc.setRequestMethod("POST");huc.setRequestProperty("User-Agent","Mozilla/4.7 (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();}
页:
[1]