일단 짜둔 소스는 특정 사이트에 로그인 한 뒤 페이지에서 정보를 얻어와서 특정 문자열을 찾아 갯수를 세는 소스입니다.

 

수강성적 확인을 위한건데 성적이 등록되면 몇개 등록되었다고 사용자에게 알려주기 위한 기본적인 코드이구요.

 

http://mis.mju.ac.kr/~wizinte/wordpress/?p=21

 

여기에 올려져 있구요. 거의 인터넷에서 복사붙여넣기 한 수준이라 허접해도 이해해주시길-_-; 조언은 감사히 받습니다.

 

휴대폰에서 편하게 이용하기 위해서 이걸 안드로이드로 이식을 하고 싶은데 구상은 대체로 이렇습니다.

 

1. 아이디와 비밀번호를 입력받게 하기

2. 실행하면 기본적으로 백그라운드에서 작동하며 분단위의 새로고침 시간을 정해 해당 웹페이지에서 정보 가져오기

3. '>공개'로 검색된 문자열 수의 값이 변경되었을경우 사용자에게 진동으로 알림

4. 원한다면 내부에 저장한 html파일을 출력(브라우저 이용)

 

그런데 안드로이드 개발을 처음하다보니 개발자 정보 게시판에서 회색님이 올리신 글을 봐도 깝깝하네요ㅠㅠ

 

일단 특정 액티비티의 레이아웃 구성을 하는 방법은 알았는데 위의 구상에 따라 작동해야할 부분은 어디에 집어넣어야하는지 등등 어디서 정보를 얻어야 할지 모르겠습니다; 정보가 너무 많아서 검색어로도 원하는 정보를 잘 찾을수가 없네요.

 

추천해주실 책이나 게시물이 있으시면 알려주시면 고맙겠습니다.

 

 import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.*;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class main {
 /**
  * @param args
  */
 
 URL url;
 HttpURLConnection con;
 static int i=0;
 String user_id="학번";
 String passwd="비밀번호";
 
 public static void main(String[] args){
  // TODO Auto-generated method stub
  
  try{
   main login=new main();
   String cookies=login.login();
   String data=login.getData(cookies);
   
   String pattern=">비공개";
   Pattern p=Pattern.compile(pattern);
   Matcher m=p.matcher(data);
   while (m.find()) {
    /*System.out.println(m.group());*/
    i++;
   }
   System.out.println(i+"개 비공개");
   /*FileWriter fos=new FileWriter("score.html");
   fos.write(data);
   fos.close();*/
   
  }
  catch(Exception e){
   e.printStackTrace();
  }
 }
 
 private String login() throws Exception {
  String cookies="";
  
  try{
   
  url=new URL("http://myiweb.mju.ac.kr/servlet/sys.sys01.Sys01Svl01?user_id="+user_id+"&passwd="+passwd+"&attribute=login");
  con=(HttpURLConnection)url.openConnection();
  con.setRequestMethod("POST");
  con.setDoOutput(true);
  con.setInstanceFollowRedirects(false);
  con.connect();
  
  Map m = con.getHeaderFields();
  if(m.containsKey("Set-Cookie")) {
   Collection c =(Collection)m.get("Set-Cookie");
   for(Iterator i = c.iterator(); i.hasNext(); ) {
    cookies += (String)i.next() + ", ";
       }
   }
  } catch (Exception e) {
   throw e;
  } finally {
   con.disconnect();
  }
  return cookies;
 }
 
 private String getData(String cookies) throws Exception {
  StringBuffer sb=null;
  
  try{
   url=new URL("http://myiweb.mju.ac.kr/servlet/su.suh.suh09.Suh09Svl01?attribute=getAllGrades_STD1&studentCd="+user_id);
   con=(HttpURLConnection)url.openConnection();
   con.setRequestMethod("POST");
   con.setDoOutput(true);
   con.setRequestProperty("cookie",cookies);
   con.connect();
   
   BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "EUC-KR"));
   sb = new StringBuffer();
   String strData = "";
   while ((strData = br.readLine()) != null) {
    sb.append(strData);
   }
   
  }catch(Exception e){
   throw e;
  }finally{
   con.disconnect();
  }
  return sb.toString();
 }
}