C'est la première fois que je demande à APIS de retourner l'objet JSON résultat. Je pense que j'ai le bon code de tâche asynchrone mais je ne sais pas comment l'exécuter. C'est mon code de classe. Pour ma mise en page tout ce que j'ai est un bouton avec une méthode onClick()
gg, une barre de progression et une vue de texte.
Telle est la tâche async:Asynctask type inconnu execute
public class MainActivity extends Activity
{
ProgressBar progressBar;
TextView responseView;
EditText emailText;
String URL;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
responseView = (TextView) findViewById(R.id.responseView);
emailText = (EditText) findViewById(R.id.emailText);
URL = "https://kgsearch.googleapis.com/v1/entities:search?query=taylor+swift&key=APIKEY&limit=1&indent=True";
}
public void gg(View v)
{
new RetrieveFeedTask.execute();
}
private class RetrieveFeedTask extends AsyncTask<Void, Void, String> {
private Exception exception;
protected void onPreExecute() {
progressBar.setVisibility(View.VISIBLE);
responseView.setText("");
Toast.makeText(MainActivity.this, "pre execute", Toast.LENGTH_LONG).show();
}
protected String doInBackground(Void... urls) {
String email = emailText.getText().toString();
// Do some validation here
try {
URL url = new URL(URL);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.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;
}
}
protected void onPostExecute(String response) {
if(response == null) {
response = "THERE WAS AN ERROR";
Toast.makeText(MainActivity.this, "post execute", Toast.LENGTH_LONG).show();
}
progressBar.setVisibility(View.GONE);
Log.i("INFO", response);
responseView.setText(response);
}
}
}
Ainsi, dans le public void gg(View v)
j'appelle la méthode .execute
mais il me donne une erreur
Type inconnu exécuter
Dois-je ajouter des paramètres à la méthode d'exécution?
Si oui quoi?
Merci.
Merci, je vais essayer et laisser u savoir –
Merci cela a fonctionné. BTW demande juste. Y a-t-il une erreur dans la tâche asynchrone? Parce que la réponse que j'obtiens est nulle. Une idée. Merci encore –
Je l'ai eu. J'ai dû ajouter une permission Uses Internet dans mon manifeste. Cela a fait fonctionner !!! Merci encore pour votre réponse! –