Android App mit Login plus Serverkommunikation

P

PhilippEscher

Gast
Hallo Leute,

ich sitze gerade dadran, meine erste Android App mit richtiger Funktion zu bauen. Am Anfang soll einfach ein Loginformular erscheinen, wo der User seine ID und ein Passwort eingeben kann. Das Layout habe ich schon selber erstellt :thumbsup::biggrin: Aber bei der Funktion brauche ich jedoch eure Hilfe. Wenn nun der Button geklickt wird, soll ein HTTP Request per POST an eine URL diese Daten senden, der Server wertet diese aus und schickt ein JSON zurück. Hat jemand eine Ahnung, ob das so geht oder ob man es anders machen muss?

Cool wäre es auch, wenn der Button erst drückbar ist, wenn beide Felder ausgefüllt sind.

Mit freundlichen Grüßen
Philipp
 
Theroretisch könnte man es so machen. So wie du es beschreibst wäre es kein klassischer Login, eher eine Authentifizierung für einen download. Soll nur einmal etwas runtergeladen werden oder sollen öfter Anfragen an den Server gesendet werden? Wie schaut dein Code bisher aus? Wo hakt es?
 
Zuletzt bearbeitet:
Nachdem der User sich eingeloggt hat, sollen alle Funktionen erst verfügbar sein. Ich habe noch keinen Code, bin in Java leider ein absoluter Neuling. Aber es würde generell so von der Planung umzusetzen sein?
 
Ja schon. Für die Serverseite würde ich für den Anfang ein Sessionbasiertes Loginsystem mit PHP und SQL empehlen, später dann auch mit Cookies. Also aus der App Username und Passwort and den Server senden, die Posts auslesen und mit Daten in der SQL abgleichen, wenn die Daten korrekt sind eine Session erstellen, die Session ID und den erfolgreichen Login zurückgeben, die SessionID temporär inne sql sichern, dann bei jeder anfrage beim server die SeesionId mitgeben und was gefordert wird, serverseitig wieder auswerten etc... Evtl. ist es anfangs leichter wenn du eine WebView verwendest, und auf dem Server eine Webseite nutzt.
 
Zuletzt bearbeitet:
Eigentlich wollte ich das Ganze im BackEnd über NodeJS laufen lassen, das wäre von der Performance her viel besser als PHP. Das ist ja auch möglich?
 
Ja auch damit ist das machbar, habe ich bisher noch nicht gekannt, hab mal bei flüchtig Wikipedia geschaut, das werde ich mir nochmal genauer anschauen.
 
Ok erstmal danke für deine Hilfe, mein Notebook kommt leider überhaupt nicht klar mit Eclipse und dem Android SDK, stürzt ewig ab und hängt sich auf. Was hast du für Hardware?
 
Was stürzt denn ab? Der Emulator? Kannst auch echte Devices zum Debugging nehmen.

Meine Programme schreibe ich auch auf älterer Hardware, Pentium D @2x2.8Ghz, 4GB ram. Debuggen tuh ich auf dem Handy, der Emulator braucht mir ein wenig zu lange zum booten.

Ich hab ein mal an einem uraltem Rechner mit einem AMD-Singlecore @1.7 GHz, 1GB RAM gearbeitet, ging berade noch aber ohne Emulator.
 
Der Emulator ist zwar langsam stürzt dafür aber nicht ab :)

Eclipse stürzt einfach ab, ich ändere einfach die z. B. ID eines Inputfeldes und das Programm schließt sich einfach.
 
Evtl. einfach mal neu installieren(java etvl. auch), bzw. die Portable neu entpacken, evtl. auch mal die Architektur wechseln(falls du 64Bit verwendest). Falls alle Stricke reissen mal AndroidStudio oder NetBeans testen.
 
Habe alles ganz frisch installiert, deswegen ist es komisch. Was sind AndroidStudio und NetBeans?

Der ursprüngliche Beitrag von 13:56 Uhr wurde um 13:57 Uhr ergänzt:

Habe es jetzt so gebaut, dass es einen Button gibt und wenn man auf diesen klickt soll per JAVA ein HTTP Request ausgeführt werden. Hast du eine Idee, wie das geht? Bin gerade am Googlen.
 
Zuletzt bearbeitet:
Habe gerade das hier gebaut, mal schauen ob das klappt.
package com.example.serverconnectiontest;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class MainActivity extends ActionBarActivity implements OnClickListener {

Button button;
URL server;
HttpURLConnection connection = null;
String urlparameters;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);

button = (Button)findViewById(R.id.button1);
button.setOnClickListener(this);

return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
server = new URL("blabla");
connection = (HttpURLConnection)server.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);

urlparameters = "fName=" + URLEncoder.encode("???", "UTF-8") + "&lName=" + URLEncoder.encode("???", "UTF-8");

DataOutputStream request = new DataOutputStream (connection.getOutputStream());
request.writeBytes(urlparameters);
request.flush();
request.close();

InputStream inputstream = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(inputstream));
String line;
StringBuffer response = new StringBuffer();
while((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return;
} catch(Exception e) {
e.printStackTrace();
return;
} finally {
if(connection != null) {
connection.disconnect();
}
}
}
}
 

Ähnliche Themen

B
Antworten
4
Aufrufe
495
bb321
B
FabianDev
Antworten
5
Aufrufe
560
swa00
swa00
D
Antworten
23
Aufrufe
2.552
Data2006
D
Zurück
Oben Unten