반응형
안녕하세요. 돼지왕 왕돼지입니다.
오늘은 네트워크(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)
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] ANR 에 대해 알아봅시다. (0) | 2012.02.18 |
---|---|
[Android/안드로이드] Progress Dialog sample code. (0) | 2012.02.18 |
[Android/안드로이드] Async Download. (0) | 2012.02.18 |
[Android/안드로이드] web, internet에서 image 읽어오는 방법 + Cache. ( download, load ) (0) | 2012.02.18 |
[Android/안드로이드] DOM Parser ( 돔 파서 ) (0) | 2012.02.18 |
댓글