<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/do_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go!" /> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Press button for action" /> <EditText android:id="@+id/edit" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
package kr.android.web; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class AccessWebDemo extends Activity { //로그 작성시 검색용 태그 public static final String TAG="AccessWebDemo"; BufferedReader br; TextView textView; EditText edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView)findViewById(R.id.text); edit = (EditText)findViewById(R.id.edit); Button goButton = (Button)findViewById(R.id.do_action); goButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //다량의 문자열 가공시 하나의 객체에서 문자열 처리를 하기위해서 StringBuffer sb = new StringBuffer(); try{ //인터넷 주소 정보를 갖고 있는 객체 URL text = new URL("http://www.naver.com/index.html"); //설정한 인터넷 주소의 HTML 정보를 InputStream으로 반환 InputStream isText = text.openStream(); br = new BufferedReader(new InputStreamReader(isText)); String str = null; while((str=br.readLine()) != null){ sb.append(str+ "\n"); } edit.setText(sb.toString()); isText.close(); }catch(Exception e){ Log.e(TAG,"Error in network call",e); } } }); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/do_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go!" /> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Press button for action" /> <EditText android:id="@+id/edit" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
package kr.android.web2; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class AccessWebDemo2 extends Activity { public static final String TAG="AcessWebdemo"; EditText edit; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit = (EditText)findViewById(R.id.edit); Button goButton = (Button)findViewById(R.id.do_action); goButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try{ String msg = getStringFromURL("http://m.naver.com/index.html"); edit.setText(msg); }catch(Exception e){ Log.e(TAG,"Error in network call", e); } } }); } public String getStringFromURL(String url){ String responseBody = null; try{ //전달되는 URL을 통해서 해당 URL을 처리하는 //서버에 접속하여 URL에 매칭되어 있는 HTML 정보를 처리하는 객체 HttpClient httpclient = new DefaultHttpClient(); //HTTPGet : URL를 제공해서 client의 요청 정보 처리(HTML get방식으로 요청) //ResponseHandler : 서버로부터 client에 전달되는 응답 정보 처리(HTML 추출) ResponseHandler<string> responseHander = new BasicResponseHandler(); responseBody = httpclient.execute(new HttpGet(url), responseHander); }catch(Exception e){ Log.e(TAG,"getStringFromURL error",e); } return responseBody; } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/do_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go!" /> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Press button for action" /> <EditText android:id="@+id/edit" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
package kr.android.web3; import java.io.BufferedReader; import kr.android.web3.R; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class AccessWebDemo3 extends Activity { public static final String TAG = "AcessWebdemo"; BufferedReader br; TextView textView; EditText edit; ProgressDialog dialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit = (EditText) findViewById(R.id.edit); textView = (TextView) findViewById(R.id.text); Button goButton = (Button) findViewById(R.id.do_action); goButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*백그라운드에서 웹에 접속해서 HTML을 전송하는 동안 UI에 데이터 전송중임을 알리는 메세지를 출력하는 기능 원격 데이터 전송받는 순서 1. ProgressDialog 생성 2. 백그라운드에서 HTML를 전송받음 3. 전송이 완료되면 ProgressDialog 중지 4. UI 갱신*/ dialog = ProgressDialog.show(AccessWebDemo3.this, "사이트 접속중", "페이지를 로드중 입니다", true); try { proccessData(); } catch (Exception e) { Log.e(TAG, "Error in network call", e); } } }); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { //ProgressDialog 중지 dialog.dismiss(); //UI 갱신 String result = msg.getData().getString("str"); edit.setText(result); } }; public void proccessData() { //원격 데이터를 전송받기 위해 //Thread를 생성해 UI가 display되는 동안에 백그라운드에서 데이터를 전송받음 new Thread() { public void run() { String str = getStringFromUrl("http://www.naver.com/index.html"); //Message 객체 생성 Message message = handler.obtainMessage(); //전송받은 데이터를 담기 위해 Bundle 객체 생성 Bundle bundle = new Bundle(); bundle.putString("str", str); //Bundle객체를 Message객체 등록 message.setData(bundle); //Handler의 HandleMessage 메소드 호출 handler.sendMessage(message); } }.start(); } public String getStringFromUrl(String url) { String responseBody = null; try { // 전달되는 URL을 통해서 해당 URL을 처리하는 // 서버에 접속하여 URL에 매칭되어 있는 HTML 정보를 처리하는 객체 HttpClient httpclient = new DefaultHttpClient(); // HTTPGet : URL를 제공해서 client의 요청 정보 처리(HTML get방식으로 요청) // ResponseHandler : 서버로부터 client에 전달되는 응답 정보 처리(HTML 추출) ResponseHandler<string> responseHander = new BasicResponseHandler(); responseBody = httpclient.execute(new HttpGet(url), responseHander); } catch (Exception e) { Log.e(TAG, "getStringFromURL error", e); } return responseBody; } }
마지막에는 데이터를 가지고 올때 로딩이 뜨게 되있습니다
권한 설정은 INTERNET입니다(manifext.xml)
'Android > 기본' 카테고리의 다른 글
StaticFile (0) | 2012.04.28 |
---|---|
Read Write File (자동 저장할때 사용) (0) | 2012.04.28 |
NetWork Wifi , 3G (0) | 2012.04.28 |
Browser WebView (브라우저) (0) | 2012.04.28 |
Handler 사용하기 (로딩 표시?) (0) | 2012.04.28 |