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(); |
| String cookieVal = hc.getHeaderField("Set-Cookie"); |
| sessionId = cookieVal.substring(0, cookieVal.indexOf(";")); |
}
| HttpURLConnection huc= (HttpURLConnection) url.openConnection(); |
| 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(); |
| 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