본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Network & Internet 에 대해 알아봅시다.

by 돼지왕 왕돼지 2012. 2. 18.
반응형


안녕하세요. 돼지왕 왕돼지입니다.
오늘은 네트워크(Network) 와 인터넷(Internet) 에 대해 알아보겠습니다.


ConnectivityManager ( 연결 관리자 )

 
<APIs> 
getSystemService(CONNECTIVITY_SERVICE)
  -> 연결 관리자 ConnectivityMenagaer 객체를 얻을 수 있다.
1. 사용 가능한 네트워크들에 대한 정보 조사
2. 각 연결 방법(네트워크)의 현재 상태 조사
3. 네트워크 연결 상태가 변경될 때 모든 응용 프로그램에게 인텐트로 알린다.
4. 한 연결에 실패하면 대체 연결을 찾는다. 
 
NetworkInfo[] getAllNetworkInfo ()
NetworkInfo getActiveNetworkInfo ()
NetworkInfo getNetworkInfo (int networkType)
   -> TYPE_MOBILE, TYPE_WIFI 가능
  
boolean isAvailable ()
boolean isConnected ()
boolean isRoaming ()
NetworkInfo.State getState ()
 
 
<example>

ConnectivityManager mgr = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo[] ani = mgr.getAllNetworkInfo();
for (NetworkInfo n : ani){
   sResult += (n.toString() + "\n\n");
}
NetworkInfo ni = mgr.getActiveNetworkInfo();
sResult += ("Active : \n" + ni.toString() + "\n");


 장비의 네트워크 상태를 조사하려면 매니페스트에 다음 permission이 추가되어야 한다.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 
 
 
 

HTTP Request ( 요청 )

  

<APIs> 
URL ([URL context,] String spec)
URL (String protocol, String host, int port, String file)
  
 

<APIs with example> 
 http://www.chatting.com/showroom?girl=3  에 대해.. (URL에 대해)
 
 메서드 ( URL )  리턴    설명   
 String getProtocol()    http    프로토콜  
 int getDefaultPort()     80    디폴트 포트  
 int getPort()    -1    URL에 정의된 포트, 없을 시 -1  
 String getHost()    www.chatting.com    서버 주소  
 String getFile()    /showroom?girl=3    Path + Query  
 String getPath()    /showroom    서버내의 경로  
 String getQuery()    girl=3    서버로 전달되는 쿼리 변수값  
  
규칙에 맞지 않는 URL 설정시 MalformedURLException 예외 발생
 

<APIs cont.>  
URLConnection URL.openConnection ([Proxy proxy])
  -> URLConnection 자체는 추상 클래스.
      프로토콜에 따라 Http, Https, Jar 등이 붙어 HttpURLConnection, HttpsURLConnection 등 가능
 

 URLConnection의 연결 속성 설정 (get 도 pair 로 존재) 
 메서드 설명   
 setConnectTimeout (int timeout)    연결 제한 시간을 msec 단위로 지정.
 0은 무한   
 setReadTimeout(int timeout)    읽기 제한 시간 지정. 0은 무한  
 setUseCaches (boolean newValue)    캐시 사용 여부 지정  
 setDoInput (boolean newValue)    입력 받을 것인지 지정  
 setDoOutput (boolean newValue)    출력을 할 것인지 지정   
 setRequestProperty (String field, String newValue)    요청 헤더에 값 설정   
 addRequestProperty(String field, String newValue)    요청 헤더에 값 추가. 중복시 덮지 않음  


void HttpURLConnection.setRequestMethod (String method)
  -> GET(default), POST
 
int getResponseCode()
   -> 리턴 값은 HTTP_OK(200), HTTP_NOT_FOUND(404), HTTP_UNAUTHORIZED(401) 등
 
    
 
 

HTML 읽기

   
<방법 1> 

String html = Downloadhtml("http://www.google.com");
 
String DownloadHtml (String addr){
   StringBuilder html = new StringBuilder();
   try{
      URL url = new URL(addr);
      HttpURLConnection conn = (HttpURLConnection)url.openConnection();
      if (conn != null){
         conn.setConnectTimeout(10000);
         conn.setUseCaches(false);
         if (conn.getResponseCode() == HttpURLConnection.HTTP_OK){
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            for (;;){
               String line = br.readLine();
               if (line == null) break;
               html.append(line + "\n");
            }
            br.close();
         }
         conn.disconnect();
      }
   }
   catch (Exception e) { ; }
   return html.toString();
}

 
 
  인터넷을 이용하려면 다음 permission을 메니페스트에 등록해야 한다.
 <uses-permission android:name = "android.permission.INTERNET"/>
 
 
<방법 2>

String DownloadHtml (String addr){
   HttpGet httrpget = new HttpGet(addr);
   DefaultHttpClient client = new DefaultHttpClient();
   String html = "";
   try{
      HttpResponse response = client.execute(httpget);
      String line = null;
      BufferedReader br =
                       new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
      while ((line = br.readLine()) != null){
         html += (line + '\n');
      }
      br.close();
   }
   catch (Exception e) { ; }
   return html;
}


HttpGet (String uri)
HttpPost (String uri)
 
HttpResponse execute (HttpUriRequest request)

 
로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글