posts - 23,comments - 66,trackbacks - 0
          from: java實(shí)現(xiàn)web登陸

          web登陸無(wú)非就是網(wǎng)頁(yè)獲取,cookie 的管理,post和get方式的模擬。

          1.網(wǎng)頁(yè)內(nèi)容獲取
          ???? 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(";"));
          }

          ?發(fā)送設(shè)置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);

          新的請(qǐng)求,利用上面獲取的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();
          //設(shè)置允許output
          ??huc.setDoOutput(true);
          //設(shè)置為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();

          }



          結(jié)束語(yǔ):
          ?????上面的代碼基本就可以實(shí)現(xiàn)網(wǎng)站的登陸、信息獲取的功能。看到登陸奇兵等軟件賣的那么火,我們也做一個(gè)去吧.

          參考:
          1.A recipe for cookie management
          http://www.javaworld.com/javaworld/jw-04-2002/jw-0426-cookie.html

          posted on 2006-03-21 21:47 rd2pm 閱讀(1342) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          主站蜘蛛池模板: 溧阳市| 阜阳市| 榆树市| 兴仁县| 巴塘县| 房山区| 吕梁市| 西林县| 毕节市| 砀山县| 陆丰市| 定安县| 合阳县| 奎屯市| 灵寿县| 和静县| 武清区| 丰原市| 雷山县| 清新县| 湛江市| 濮阳市| 张北县| 平山县| 从化市| 安国市| 聂拉木县| 全椒县| 繁峙县| 郯城县| 双江| 高邮市| 松潘县| 巴林左旗| 玉龙| 辽阳县| 闽侯县| 济阳县| 双峰县| 蒲江县| 鹤山市|