note

Access Web 본문

Android/기본

Access Web

투한 2012. 1. 12. 11:11

42번 프로젝트



43번 프로젝트




44번 프로젝트


마지막에는 데이터를 가지고 올때 로딩이 뜨게 되있습니다



권한 설정은 INTERNET입니다(manifext.xml)


http://javai.tistory.com/368 


42번 main.xml
<?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>


42번 java
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);
				}
			}
		});
	}
}


43번 xml
<?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>


43번 java
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 responseHander = new BasicResponseHandler();
			responseBody = httpclient.execute(new HttpGet(url), responseHander);
		}catch(Exception e){
			Log.e(TAG,"getStringFromURL error",e);
		}
    	return responseBody;
    }
}


44번 xml
<?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>


44번 자바
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 responseHander = new BasicResponseHandler();
			responseBody = httpclient.execute(new HttpGet(url), responseHander);
		} catch (Exception e) {
			Log.e(TAG, "getStringFromURL error", e);
		}
		return responseBody;
	}
}


'Android > 기본' 카테고리의 다른 글

StaticFile  (0) 2012.01.12
Read Write File (자동 저장할때 사용)  (0) 2012.01.12
NetWork Wifi , 3G  (0) 2012.01.12
Browser WebView (브라우저)  (0) 2012.01.11
Handler 사용하기 (로딩 표시?)  (0) 2012.01.11