<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
As the http post is a long process and cannot run in the main thread of the Android activity, therefore it is necessary to use an AsyncTask, create a private class within the Activity class as belows:
class PostCommandTask extends AsyncTask<String, Integer, Integer> { protected Integer doInBackground(String... values) { // your click actions go here // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://memecs.org/smarthome/post.php?relay_id=2048"); try { // Add your data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair(values[0]+":State", values[1])); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } return 1; } protected void onPostExecute(String feed) { // TODO: check this.exception // TODO: do something with the feed } }Now to invoke the http post in a ToggleButton
ToggleButton btnSwitch=(ToggleButton)findViewById(id); btnSwitch.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String state=((ToggleButton)v).isChecked() ? "1" : "0"; new PostCommandTask().execute(address, state); } });
No comments:
Post a Comment