Manifest-Eintrag INTERNET
Eine App, die Netzwerkkommunikation betreiben will, benötigt die Berechtigung INTERNET. Diese Berechtigung muss in der Manifest-Datei hinterlegt sein.
Hintergrund
Eine Netzwerkkommunikation kann eventuell länger dauern. Darum sollte der Empfang der Antwort in einem eigenen Thread geschehen, damit die Oberfläche der App nicht einfriert.HTTP: Das Webprotokoll
Für die eigentliche Kommunikation wird die Klasse HttpURLConnection verwendet.package de.willemer.servletclient; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; public class ServletClientActivity extends Activity implements View.OnClickListener { EditText edZahl = null; Button btSteigern = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_servlet_client); edZahl = (EditText) findViewById(R.id.edZahl); btSteigern = (Button) findViewById(R.id.btSteigern); btSteigern.setOnClickListener(this); } Integer antwortwert = 0; // fuer den Datenaustausch zwischen Threads @Override public void onClick(View v) { if (v.getId()==R.id.btSteigern) { new Thread(new Runnable() { public void run() { String antwort = ""; try { URL url = new URL("http://192.168.109.190:8080/MeinServlet/Steigern"); URLConnection connection = url.openConnection(); // Nehme die Zahleneingabe und sende sie. String eingabe = edZahl.getText().toString(); //eingabe = URLEncoder.encode(eingabe, "UTF-8"); connection.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); out.write(eingabe); out.close(); // Lese die Antwort vom Server BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String str = ""; while ((str = in.readLine()) != null) { antwort = str; // Kopie, die nicht null wird. Log.d("ServletClient: ", antwort); } in.close(); } catch(IOException e) { Log.d("ServletClient", e.toString()); } // Werte den erhaltenen String aus. try { antwortwert = Integer.parseInt(antwort); } catch(NumberFormatException e) { Log.d("ServletClient",e.toString()); } // Schaffe die Eingabe in das Textfeld. Dazu in den anderen Thread runOnUiThread(new Runnable() { public void run() { edZahl.setText(antwortwert.toString()); } }); } }).start(); } } }Das Client-Programm ruft das Servlet namens Steigern auf dem PC 192.168.109.190.
JSON
Das Servlet wird mit dem Server Daten austauschen, die in XML oder in JSON kodiert werden.