jeudi 5 mars 2015

Android AsyncTask in other class called from Activity


Vote count:

0




I have a MainActivity in which I instantiate a class. This class contains basic data and two important methods: GetRequestAccessUrl(params) and getToken(string) which returns an AuthResponse.


The first method runs fine, the string is generated and processed in the application. However, the getToken-method involves networking and is therefore prohibited to run on the main thread and AsyncTask is recommended. The implementation of the latter method is as following:



public AuthResponse getToken(String code) {
if (secrete == null) {
throw new IllegalStateException("Application secrete is not set");
}

try {

URI uri = new URI(TOKEN_URL);
URL url = uri.toURL();

HttpURLConnection conn = (HttpURLConnection) url.openConnection();


try {
StringBuilder sb = new StringBuilder();
sb.append("client_id=" + clientId);
sb.append("&client_secret=" + secrete);
sb.append("&code=" + code);

conn.setRequestMethod("POST");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);

OutputStream os = conn.getOutputStream();


os.write(sb.toString().getBytes("UTF-8"));

if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}

Reader br = new InputStreamReader((conn.getInputStream()));
Gson gson = new Gson();
return gson.fromJson(br, AuthResponse.class);

} finally {
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}


In the MainActivity the entire class is created, the first method is called, some actions are executed and the the getToken-method should run. However I seem to be completely stuck on how to do this, or how to create a (working) AsyncTask regarding this method. Any help is appreciated.



asked 1 min ago







Android AsyncTask in other class called from Activity

Aucun commentaire:

Enregistrer un commentaire