因為用到網路
所以要在 AndroidManifest.xml 增加 permission
<uses-permission android:name="android.permission.INTERNET"/>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnRefresh = (Button)findViewById(R.id.btn_refresh);
btnRefresh.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
new Thread(runnable).start();
}
});
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
TextView tv = (TextView)findViewById(R.id.msg);
tv.setText(msg.getData().getString("msg"));
}
};
Runnable runnable = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
HttpPost httpRequest = new HttpPost("http://formActionUrl");
//表單欄位資料裝進 List
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key1", "I am key1 in data"));
params.add(new BasicNameValuePair("key2", "I am key2 in data"));
try{
httpRequest.setEntity((HttpEntity) new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
if(httpResponse.getStatusLine().getStatusCode() == 200){
//把接收到的 data 裝填進 Bundle, 利用 Message 轉給 Handdler 繼續處理
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("msg", EntityUtils.toString(httpResponse.getEntity()));
msg.setData(bundle);
handler.sendMessage(msg);
}
}catch(Exception e){
//錯誤訊息裝填進 Bundle, 利用 Message 轉給 Handdler 繼續處理
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("msg", e.toString());
msg.setData(bundle);
handler.sendMessage(msg);
}
}
};