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 {
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;
}
};
prog = ProgressDialog.show(this, "通信中", "HTTPリクエスト送信中");
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);
tv = new TextView(context);
et = new EditText(context);
et.setText("http://efolab.com/");
Button btn = new Button(context);
btn.setText("接続してTextViewに表示する");
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) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}