J'ai un script .php que j'utiliser pour obtenir des informations à partir d'un BBDD:Ne peut pas recevoir des données de JSON - PHPMyAdmin
<?php
//Creating a connection
$con = mysqli_connect("localhost:3306","root","","database");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql= "SELECT * FROM tQuestions";
$result = mysqli_query($con ,$sql);
while ($row = mysqli_fetch_assoc($result))
{
$array[] = $row;
(ONLY USED ON SECOND TRY) echo $row;
}
header('Content-Type:Application/json');
echo json_encode($array);
mysqli_free_result($result);
mysqli_close($con);
?>
Quand je l'utilise sur mon Android App, je reçois une valeur nulle . Aussi quand je vais le lien correct, je reçois une page sans information et un fichier json vide.
Ensuite, je mets un "echo $ row" pour voir ce que je reçois, et j'ai une chaîne comme ceci: "ArrayArrayArrayArray" ... Et il a 50 mots "Array", qui sont les mêmes que les lignes que j'ai sur la base de données.
Qu'est-ce que je fais mal? Je mets aussi le code Android:
private void getQuestionsFromDB() {
AsyncTask<Void, Void, JSONArray> asyncTask = new AsyncTask<Void, Void, JSONArray>() {
@Override
protected JSONArray doInBackground(Void... params) {
JSONArray array = null;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://www.am-motion.eu/scriptsapp/preguntas.php")
.build();
try {
Response response = client.newCall(request).execute();
array = new JSONArray(response.body().string());
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return array;
}
@Override
protected void onPostExecute(JSONArray array) {
try {
for (int i = 0; i < array.length(); i++) {
JSONObject object = null;
object = array.getJSONObject(i);
listQuestions.add(object.getString("Question"));
listAnswers.add(object.getString("Answer1"));
listAnswers.add(object.getString("Answer2"));
listAnswers.add(object.getString("Answer3"));
listAnswers.add(object.getString("Answer4"));
listCorrectAnswer.add(object.getString("Answer"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
asyncTask.execute();
}
Merci!
Si vous accédez à l'URL du navigateur, ce qui est la sortie? Les données 'json' sont-elles affichées? –
il n'y a pas de sortie. Je vois une page blanche avec des informations. Mais, si j'utilise "echo $ row" la sortie était "ArrayArrayArray ..." – Imrik
s'il vous plaît vérifier votre journal des erreurs apache, je viens de curieux module 'json' pas activer dans votre php –