Vous rencontrez des problèmes pour essayer d'utiliser une URL différente de cette même classe. J'accéderai aux pages Web semblables au ci-dessous beaucoup plus de fois.Comment accéder à différentes URL dans AsyncTask dans Java/Android
J'ai recherché de nombreux Q/As et tutoriels différents et je n'arrive pas à trouver comment passer une URL en tant que paramètre afin qu'elle soit utilisée dans la méthode doInBackground. J'appelle la méthode execute en tant que tel:
new RetrieveFeedTask().execute();
private class RetrieveFeedTask extends AsyncTask<Void, Void, String> {
protected void onPreExecute() {
}
protected String doInBackground(Void... urls) {
try {
URL url = new URL(API_URL_COMPETITIONS); // this is url http://api.football-data.org/v1/competitions
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReadelConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
bufferedReader.close();
return stringBuilder.toString();
} finally {
urlConnection.disconnect();
}
} catch (Exception e) {
Log.e("ERROR", e.getMessage(), e);
return null;
}
}
//entire JSON page is saved in response
protected void onPostExecute(String response) {
if(response == null) {
response = "THERE WAS AN ERROR";
}
Log.i("INFO", response);
try {
JSONArray comps = new JSONArray(response);
JSONObject second = comps.getJSONObject(1); //this is array element PremierLeague2016/2017
compArray.add("Competition");
compArray.add(second.getString("caption"));
//i then set this to an ArrayAdapter and show the results in a Spinner. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
competition.setAdapter(adapter);
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
apprécierais toute aide!
Je suis confus quel est le problème.Vous devez remplacer 'API_URL_COMPETITIONS' et utiliser n'importe quelle URL que vous voulez –
oui mais j'aurai besoin de cette URL pour un seul Spinner, puis une URL différente pour un autre Spinner et ainsi de suite. J'ai donc besoin de créer des instances de cette classe mais elle a une URL différente à chaque fois, si c'est possible mais je ne sais pas comment je vais le faire. – Lewisfitz07
Il peut vous être utile d'utiliser la bibliothèque Volley et 'JsonObjectRequest' ou' JsonArrayRequest' –