Buongiorno, ho avviato un sito su Altervista con dei miei colleghi di università nel 2021 in cui vengono pubblicate delle storie da far raccontare al robot Pepper attraverso un'app che si collega al database del sito sempre presente su Altervista, recentemente ho ri-preso il progetto in quanto devo apportare delle modifiche, ho notato però che le richieste HTTP sembrano essere bloccate quando uso l'emulatore del robot, l'emulatore in questione utilizza una versione più datata di Android (Emulatore Android v. 29.0.11) per mantenere la compatibilità con il robot Pepper, confermo che il sistema funzionava correttamente e che per appunto solo ultimamente sto riscontrando questi problemi, temo possa esserci un problema di sicurezza legato al fatto che la versione Android del robot è vecchia, ma non ho sufficienti informazioni per confermare questa opzione.
Vi riporto di seguito i dati:
File PHP per recuperare la lista delle storie
Codice PHP:
<?php
require "connection.php";
$query = $conn->prepare("SELECT * FROM Storie");
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($resultArray);
echo json_encode($result);
$conn=null;
?>
Classe su Android Studio
Codice:
package esame.pepper;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
public class GetTitles extends AsyncTask<Void, Void, String> {
Context context;
protected static ArrayList<String> titleList = new ArrayList<>();
public GetTitles(Context context) {
this.context = context;
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL ("https://pepper4storytelling.altervista.org/Cartella%20temporanea%20GETTERS/story_list.php");
//URL url = new URL ("https://jsonplaceholder.typicode.com/posts");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
Log.d("provahttp", "velore query : "+ url);
InputStream inputStream = httpURLConnection.getInputStream();
Log.d("provahttp", "velore query : "+ inputStream);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.ISO_8859_1));
StringBuilder sb = new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
sb.append(line).append('\n');
Log.d("provahttp", " Testo: "+ sb.toString());
}
JSONArray jsonArray = new JSONArray(sb.toString());
for (int i=0; i < jsonArray.length(); i++ ) {
JSONObject ob = jsonArray.getJSONObject(i);
titleList.add(i, ob.get("Titolo").toString());
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return sb.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
Log.d("provahttp", "Errore di MalformedURLException");
} catch (IOException e) {
e.printStackTrace();
Log.d("provahttp", "Errore di IOException");
} catch (JSONException e) {
e.printStackTrace();
Log.d("provahttp", "Errore di JSONException");
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String s) {
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
Se uso questo URL mi da IOException nel try-catch, però se provo ad aprire il file nel brower trovo effettivamente l'oggetto JSON con i dati ottenuti dalla query.
Codice:
https://pepper4storytelling.altervista.org/Cartella%20temporanea%20GETTERS/story_list.php
Se invece uso quest'altro riesco effettivamente a caricare i dati presenti nel json sull'applicazione
Codice:
https://jsonplaceholder.typicode.com/posts
Sapreste consigliarmi cosa fare per risolvere questa situazione?