2016-07-19 16 views
0

Ich möchte eine URL wie "http://192.168.1.1/key_on" an ein HTML-Formular senden und dann eine Nummer 1 oder 0 als Antwort erhalten, wenn es sich richtig ändert, dann etwas in meiner App tun. Ich sende meine Anfrage von AsyncTask, und es funktioniert einwandfrei! Aber ich weiß nicht, wie ich reagieren soll?Antwort von http erhalten Android

Hier ist mein einige Code in Aktivitäten:

Button btn= (Button)convertView.findViewById(R.id.two); 
btn.setWidth(500); 
new RequestTask().execute("http://192.168.1.1/key_on"); 
btn.setBackgroundColor(Color.parseColor("#FF11AC06")); 
btn.setText(childText); 
btn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
    int color = Color.TRANSPARENT; 
    Drawable background = view.getBackground(); 
    if (background instanceof ColorDrawable) 
     color = ((ColorDrawable) background).getColor(); 
    if (color == Color.parseColor("#FF11AC06")) { 
     new RequestTask().execute("http://192.168.1.1/key_off"); 
     view.setBackgroundColor(Color.parseColor("#FF41403F")); 
    } else { 
     view.setBackgroundColor(Color.parseColor("#FF11AC06")); 
     new RequestTask().execute("http://192.168.1.1/key_on"); 
    } 
    } 
}); 
return convertView; 

Und in RequestTask.java:

class RequestTask extends AsyncTask<String, String, String> { 

    @Override 
    protected String doInBackground(String... uri) { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpResponse response; 
     String responseString = null; 
     try { 
      response = httpclient.execute(new HttpGet(uri[0])); 
      StatusLine statusLine = response.getStatusLine(); 
      if(statusLine.getStatusCode() == HttpStatus.SC_OK){ 
       ByteArrayOutputStream out = new ByteArrayOutputStream(); 
       response.getEntity().writeTo(out); 
       responseString = out.toString(); 
       out.close(); 
      } else{ 
       //Closes the connection. 
       response.getEntity().getContent().close(); 
       throw new IOException(statusLine.getReasonPhrase()); 
      } 
     } catch (ClientProtocolException e) { 
      //TODO Handle problems.. 
     } catch (IOException e) { 
      //TODO Handle problems.. 
     } 
     return responseString; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     //Do anything with response.. 
    } 
} 
+0

das ist was "onPostExecute" für – njzk2

+0

ist Sie geben einen String-Wert in 'doInBackground()' Methode zurück. Sie erhalten Antwort-String in 'onPostExecute()' Methode. Verwenden Sie also die Stringvariable 'result' als Ausgabe. – Lawrance

Antwort