/** * This file is part of FileSpace for Android, an app for managing your server (files, talks...). * <p> * Copyright (c) 2014-2015 FileSpace for Android contributors (http://mercandalli.com) * <p> * LICENSE: * <p> * FileSpace for Android is free software: you can redistribute it and/or modify it under the terms of the GNU General * Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any * later version. * <p> * FileSpace for Android is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * @author Jonathan Mercandalli * @license http://www.gnu.org/licenses/gpl.html * @copyright 2014-2015 FileSpace for Android contributors (http://mercandalli.com) */ package com.mercandalli.android.apps.files.common.net; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; import com.mercandalli.android.apps.files.common.listener.IPostExecuteListener; import com.mercandalli.android.apps.files.common.util.StringPair; import com.mercandalli.android.apps.files.main.Config; import com.mercandalli.android.apps.files.main.network.NetUtils; import com.mercandalli.android.library.base.java.StringUtils; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; /** * Global behavior : http Get * * @author Jonathan */ public class TaskGet extends AsyncTask<Void, Void, String> { String url; IPostExecuteListener listener; List<StringPair> parameters; Context mContext; boolean isAuthentication = true; public TaskGet(Context context, String url, IPostExecuteListener listener) { this(context, url, listener, null, true); } public TaskGet(Context context, String url, IPostExecuteListener listener, List<StringPair> parameters) { this(context, url, listener, parameters, true); } public TaskGet(Context context, String url, IPostExecuteListener listener, List<StringPair> parameters, boolean isAuthentication) { mContext = context; this.url = url; this.listener = listener; this.parameters = parameters; this.isAuthentication = isAuthentication; } @Override protected String doInBackground(Void... urls) { try { if (this.parameters != null) { if (!StringUtils.isNullOrEmpty(Config.getNotificationId())) { parameters.add(new StringPair("android_id", "" + Config.getNotificationId())); } url = NetUtils.addUrlParameters(url, parameters); } Log.d("TaskGet", "url = " + url); URL tmp_url = new URL(url); HttpURLConnection conn = (HttpURLConnection) tmp_url.openConnection(); conn.setReadTimeout(10_000); conn.setConnectTimeout(15_000); conn.setRequestMethod("GET"); if (isAuthentication) { conn.setRequestProperty("Authorization", "Basic " + Config.getUserToken()); } conn.setUseCaches(false); conn.setDoInput(true); conn.connect(); // Starts the query int responseCode = conn.getResponseCode(); InputStream inputStream = new BufferedInputStream(conn.getInputStream()); // convert inputstream to string String resultString = convertInputStreamToString(inputStream); //int responseCode = response.getStatusLine().getStatusCode(); if (responseCode >= 300) { resultString = "Status Code " + responseCode + ". " + resultString; } conn.disconnect(); return resultString; } catch (IOException e) { Log.e(getClass().getName(), "IOException", e); } return null; } /** * Get http response to String * * @param inputStream * @return * @throws IOException */ private String convertInputStreamToString(final InputStream inputStream) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; final StringBuilder result = new StringBuilder(); while ((line = bufferedReader.readLine()) != null) { result.append(line); } inputStream.close(); return result.toString(); } @Override protected void onPostExecute(String response) { Log.d("onPostExecute", "" + response); if (response == null && this.listener != null) { this.listener.onPostExecute(null, null); } else { try { JSONObject json = new JSONObject(response); if (this.listener != null) { this.listener.onPostExecute(json, response); } if (json.has("toast") && !json.getString("toast").equals("")) { Toast.makeText(mContext, json.getString("toast"), Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { Log.e(getClass().getName(), "Failed to convert Json", e); if (this.listener != null) { this.listener.onPostExecute(null, response); } } } } }