hallo an alle die dies lesen, ich bin gerade an einem Projekt um ein paar Daten in einer App graphisch und als Text darzustellen, nicht mehr und nicht weniger. Angefangen habe ich es erstmal mit einer Variable aus meiner Datenbank von dem Anbieter www.000webhost.comversucht. Aus Tutorials hab ich versucht mal zuerst eine PHP Datei zu schreiben( die ich unten nochmals einpflegen werde) die auf dem gleichen Server liegt. Das PHP Skript funktioniert soweit hab’s schon mal ohne App getestet. Die App ruft auf Button druck eine separate classe auf die die Informationen über die PHP Datei bekommt und in ein TextView ausgibt(sollte ich später noch ändern). Doch beim drücken des Button stürzt die App ab und ich hab leider keinen Schimmer wieso.
schonmal vielen Dank für eure hilfe.
<?php
$reportingLevel = -1; //0 für alle PHP Fehler und Warungen ausblenden, -1 für alle anzeigen
error_reporting($reportingLevel);
//Sicherheitsabfrage ob der Authentifizierungscode mit übergeben wurde.
//Wenn der Code nicht übergeben wurde wird die gesamte Prozedure abgebrochen.
checkAuthCode();
//Datenbankverbindung aufbauen
$connection = getDBConnection();
function getDBConnection(){
$db_name = "dbname";
$mysql_username = "dbusername";
$mysql_password = "Password";
$server_name = "localhost";
$fehler1 = "Fehler 1: Fehler beim aufbauen der Datenbankverbindung!";
$link = mysqli_connect($server_name, $mysql_username, $mysql_password, $db_name );
if($link)
{
//echo "connection success";
}
else{
//echo "connection not succsess";
}
if (!$link) {
die('Verbindung schlug fehl: ' . mysqli_error());
}
/* check connection */
if (mysqli_connect_errno()) {
die($fehler1);
}
return $link;
}
//getAllEntrys($connection);
$method = $_POST['method'];
echo $method;
if ($method == 'allEntrys'){
getAllEntrys($connection);
}
//Lesen der Daten aus der MySQL Datenbank mit PHP
function getAllEntrys($connection){
$sqlStmt = "SELECT * FROM teat1;";
$result = mysqli_query($connection,$sqlStmt);
$data = array();
if ($result = $connection->query($sqlStmt)) {
while ($row = $result->fetch_assoc()) {
$testwert = $row["testwert"];
array_push($data,array("testwert"=> $testwert));
}
$result->free();
}
closeConnection($connection);
foreach ($data as $d){
echo $d["testwert"];
echo "|";
}
}
function checkAuthCode(){
$fehler0 = "Fehler 0: Keine erfolgreiche Authentifizierung!";
if (isset($_POST['authkey']) AND isset($_POST['method'])){
$authkey = $_POST['authkey'];
if ($authkey != 'key'){
die($authkey);
}
} else {
die(var_dump($_POST));
}
}
function closeConnection($connection){
mysqli_close($connection);
}
?>
Alles anzeigen
package ActivityDataSource_Pack;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
/**
* Created by Agando on 21.12.2017.
*/
public class ActivityDataSource extends AsyncTask<String, Void, String> {
public static final String AUTHKEY = "key";
public static final String POST_PARAM_KEYVALUE_SEPARATOR = "=";
public static final String POST_PARAM_SEPARATOR = "&";
private static final String DESTINATION_METHOD = "allEntrys";
private TextView textView;
private URLConnection conn;
public ActivityDataSource(TextView textView) {
this.textView = textView;
}
@Override
protected String doInBackground(String... params) {
try {
openConnection();
return readResult();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* Öffnet eine Verbindung {@link URLConnection}.
* @throws IOException
*/
private void openConnection() throws IOException{
//StringBuffer für das zusammensetzen der URL
StringBuilder dataBuffer = new StringBuilder();
dataBuffer.append(URLEncoder.encode("authkey", "UTF-8"));
dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR);
dataBuffer.append(URLEncoder.encode(AUTHKEY, "UTF-8"));
dataBuffer.append(POST_PARAM_SEPARATOR);
dataBuffer.append(URLEncoder.encode("method", "UTF-8"));
dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR);
dataBuffer.append(URLEncoder.encode(DESTINATION_METHOD, "UTF-8"));
//Adresse der PHP Schnittstelle für die Verbindung zur MySQL Datenbank
URL url = new URL("https://Name.000webhostapp.com/conny2.0.php");
conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(dataBuffer.toString());
wr.flush();
}
/**
* Ließt das Ergebnis aus der geöffneten Verbindung.
* @return liefert ein String mit dem gelesenen Werten.
* @throws IOException
*/
private String readResult()throws IOException{
String result = null;
//Lesen der Rückgabewerte vom Server
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
//Solange Daten bereitstehen werden diese gelesen.
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
@Override
protected void onPostExecute(String result) {
if(!isBlank(result)) {
this.textView.setText(result);
}
}
private boolean isBlank(String value){
return value == null || value.trim().isEmpty();
}
}
Alles anzeigen