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){
l
System.out.printli(line);
line = br.readLine();
}
結束語:
?????上面的代碼基本就可以實現網站的登陸、信息獲取的功能。看到登陸奇兵等軟件賣的那么火,我們也做一個去吧.
參考:
1.A recipe for cookie management
http://www.javaworld.com/javaworld/jw-04-2002/jw-0426-cookie.html