Per Android Studio auf ein PHP Script zugreifen

  • Antworten:4
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 7

06.10.2017, 17:04:12 via Website

Hallo ich habe ein Problem mit dem Android Studio V. 2.3.3. Ich wollte eine App erstellen wo auf ein php script zugreift.

Code [Java]:

Anfang[
package com.example.user.jcr;

import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class LoginActivity extends AppCompatActivity {

EditText edtxt1;
EditText edtxt2;

TextView txt1;
TextView txt2;
TextView txt3;
TextView txt4;
TextView txt5;

Button but;
public String Name = "";
public String Passwort = "";
public String PasswortMySQL = "";

public String Name_php = "";
public String url_no = "****";
public String url = "";
public String F1 = "";
public String F2 = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    // Set up the login form.


    edtxt1 = (EditText) findViewById(R.id.edtxt1);
    edtxt2 = (EditText) findViewById(R.id.edtxt2);

    txt1 = (TextView) findViewById(R.id.txt1);
    txt2 = (TextView) findViewById(R.id.txt2);
    txt3 = (TextView) findViewById(R.id.txt3);
    txt4 = (TextView) findViewById(R.id.txt4);
    txt5 = (TextView) findViewById(R.id.txt5);

    but = (Button) findViewById(R.id.but);

    but.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view) {
            if (Internetan())
            {
                Name = edtxt1.getText().toString();
                Passwort = edtxt2.getText().toString();
                Name_php = Name + ".php";
                url = url_no + Name_php;
                Passwort();
                Login();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "Es besteht keine Internet verbindung",Toast.LENGTH_SHORT).show();
            }

        }
    });

}
public void Login()
{



    if(Name != null && Passwort != null)
    {
        if(Name.equals("TT"))
        {
            //Admin
            if (Passwort.equals(PasswortMySQL))
            {
                setContentView(R.layout.activity_tt);
            }
            else
            {
                txt4.setText("Ihr Passwort ist leider Falsch!");
            }
        }
        else
        {
            if(Name.equals("V1"))
            {
                if(Passwort.equals(PasswortMySQL))
                {
                    //V1
                    setContentView(R.layout.activity_v1);
                }
                else
                {
                    txt4.setText("Ihr Passwort ist leider Falsch!");
                }
            }
            else
            {
                if(Name.equals("V2"))
                {
                    if (Passwort.equals(PasswortMySQL))
                    {
                        //V2
                        setContentView(R.layout.activity_v2);
                    }
                    else
                    {
                        txt4.setText("Ihr Passwort ist leider Falsch!");
                    }
                }
                if(Passwort.equals(PasswortMySQL))
                {
                    //Normal
                    setContentView(R.layout.activity_main);
                }
                else
                {
                    txt4.setText("Ihr Passwort ist leider Falsch! Passwort: "+ PasswortMySQL +F1 +F2 );
                }

            }
        }
    }
    else
    {
        txt4.setText("Alle Fälder müssen ausgefühlt werden!");
    }
}
public void Passwort ()
{


            try
            {


                URL scripturl = new URL(url);
                HttpURLConnection connection = (HttpURLConnection) scripturl.openConnection();


                InputStream answerInputStream = connection.getInputStream();
                PasswortMySQL = getTextFromInputStream(answerInputStream);
                answerInputStream.close();
                connection.disconnect();

                F2 = "Depp";
            }
            catch (MalformedURLException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }








}

public String getTextFromInputStream (InputStream is)
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder stringBuilder = new StringBuilder();

    String actuallyZaire;
    try
    {
        while ((actuallyZaire = reader.readLine()) !=null )
        {
            stringBuilder.append(actuallyZaire);
            stringBuilder.append("\n");
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    return stringBuilder.toString().trim();
}

public boolean Internetan()
{

    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isConnectedOrConnecting();
}

}
]Ende

Code [PHP]:

Anfang[
$server = "localhost";
$datenbank = "id3110083_jcr";
$username = "id3110083_jcr";
$passwort = "tobias";

$link = new mysqli('localhost','id3110083_jcr','tobias','id3110083_jcr');




    $sql = "SELECT Passwort FROM Tobias";
foreach ($link->query($sql) as $row) {
    $daten = $row['Passwort'];
}

echo $daten;

//'<b>Betreff:'.$daten.'<b>';

?>
]Ende

Wen ich den Button "but" anklicke beendet die App sich von selber. Wisst ihr vlt. wo das Problem liegt?

Gruß Tobias

Antworten
  • Forum-Beiträge: 7

06.10.2017, 23:53:13 via Website

Danke für die schnelle Info da meine Java Kenntnisse im Bezug auf Server eher schlecht sind und meine Englisch Kenntnisse auch könntest du swa00 mir vlt. mein Script so umschreiben das es funktioniert wehre dir sehr dankbar. Und ja ich habe in "AndroidManifest.xml" die Permission "android.permission.INTERNET" und "android.permission.ACCESS_NETWORK_STATE" eingefügt oder fehlen da noch welche Ludy?

Danke im voraus
Gruß Tobias

Antworten
  • Forum-Beiträge: 2.902

07.10.2017, 09:12:40 via Website

Hallo Tobias,

das ist leider nicht "eben" mal so umgeschrieben.
I.d.R. geben wir hier sehr gerne Hilfe , Programmieren muss man dann aber schon selbst :-)

a) Im obigen Link wird die genaue Vorgehensweise beschreiben - Du solltest Dich also intensiv mit der API
beschäftigen. Ohne dass du sie verstehst , wirst du sie auch nicht auf deine Bedürfnisse umsetzen können.

Zusätzlich müsstest du im Vorfeld dich mit der Verwendung von Threads / AsynTasks auseinander setzen, - da der I-Net Zugriff nur eine der vielen Varianten ist , die mit einem AsynTask zu realisieren sind.

Alternativ dazu kannst du auch fertige Bibliotheken verwenden. (ION, HttpOK usw)
https://github.com/koush/ion

b) Bei deinem ConnectivityManager fehlt auch ein entsprechender Callback, der Dir den Status zurückgibt.

c) Deine von Ludy angefragten Permissions müssten reichen .

— geändert am 07.10.2017, 16:15:09

Liebe Grüße - Stefan
[ App - Entwicklung ]

Ludy

Antworten

Empfohlene Artikel