たぼさんの部屋

いちょぼとのんびり

T332

Main.java

package com.efolab.t332;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {
	Context context;
	LinearLayout base;
	TextView tv;
	EditText et;
	Button btn;

    /**
     * 通信中プログレスバー
     */
    private ProgressDialog prog;
    /**
     * UI用ハンドラ
     */
	@SuppressLint("HandlerLeak")
	Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			String bundleResult = msg.getData().getString("RESPONSE");
			if (bundleResult != null) {
				prog.dismiss();		//プログレスダイアログを消す
				tv.setText(bundleResult);

			} else {
				Log.v("", "response is null");
			}
		}
	};

	/**
	 * HTTPリクエスト送信
	 */
	private void performRequest() {
		final ResponseHandler<String> responseHandler = new ResponseHandler<String>() {

			@Override
			public String handleResponse(HttpResponse response)
					throws ClientProtocolException, IOException {
//				StatusLine status = response.getStatusLine();
				HttpEntity entity = response.getEntity();
				String result = null;

				try {
					result = inputStreamToString(entity.getContent());
					Message message = Message.obtain();
					Bundle bundle = new Bundle();
					bundle.putString("RESPONSE", result);
					message.setData(bundle);
					handler.sendMessage(message);
				} catch (IOException e) {
					e.printStackTrace();
				}
				return result; // nullからresultに変更
			}
		};
		prog = ProgressDialog.show(this, "通信中", "HTTPリクエスト送信中");		//this必須(contextはエラー)
		
		new Thread() {
			@Override
			public void run() {
				DefaultHttpClient client = new DefaultHttpClient();
				HttpGet httpMethod = new HttpGet(et.getText().toString());
				try {
					client.execute(httpMethod, responseHandler);
				} catch (ClientProtocolException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}.start();
	}
    /**
    *
    * @param in インプットストリーム
    * @return 読み込んだ文字列
    * @throws IOException
    */
   private String inputStreamToString(InputStream in) throws IOException {

       InputStreamReader isr = new InputStreamReader(in,"UTF-8");
       BufferedReader reader = new BufferedReader(isr);
       StringBuffer   buffer = new StringBuffer();

       String line = null;

       while((line = reader.readLine()) != null) {
           buffer.append(line);
           buffer.append("\n");
       }

       reader.close();
       isr.close();
       in.close();

       return buffer.toString();

   }
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		context = getApplicationContext();
		base = new LinearLayout(context);
		base.setOrientation(LinearLayout.VERTICAL);
		setContentView(base);
		
		//TextView
		tv = new TextView(context);
		
		// EditText
		et = new EditText(context);
		et.setText("http://efolab.com/");
		// Button
		Button btn = new Button(context);
		btn.setText("接続してTextViewに表示する");
		
		//addView
		base.addView(et);
		base.addView(btn);
		base.addView(tv);
		
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				performRequest();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}