1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
package gnf_embrun.fr.gnfpresences.outils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.util.Log;
/**
* permet d'accéder au protocole http
* Classe technique de connexion distante HTTP
* "extends"= hérite de la classe AsyncTask
*/
//LIGNE 25:
public class AccesHTTP extends AsyncTask<String, Integer, Long> {
//assynctask classe générique qui s'exécute en tache de fond sans interrompre l'application
// propriétés
public String ret = ""; // information retournée par le serveur
public AsyncResponse delegate = null; // gestion du retour asynchrone
private String parametres = ""; // paramètres à envoyer en POST au serveur
/**
* Constructeur : ne fait rien
*/
public AccesHTTP() {
super();
}
/**
* Construction de la chaîne de paramètres à envoyer en POST au serveur
*
* @param nom
* @param valeur
*/
public void addParam(String nom, String valeur) {
try {
if (parametres.equals("")) {
// premier paramètre
parametres = URLEncoder.encode(nom, "UTF-8") + "=" + URLEncoder.encode(valeur, "UTF-8");
} else {
// paramètres suivants (séparés par &)
parametres += "&" + URLEncoder.encode(nom, "UTF-8") + "=" + URLEncoder.encode(valeur, "UTF-8");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Log.d("parametres", "********acceshttp création des paramètres*************" + parametres);
}
/**
* Connexion en tache d fond dans un thread séparé
* Méthode appelée par la méthode execute
* permet d'envoyer au serveur une liste de paramètres en GET
*
* @param urls contient l'adresse du serveur dans la case 0 de urls
* @return null
*/
@Override
protected Long doInBackground(String... urls) {
// pour éliminer certaines erreurs
// System.setProperty("http.keepAlive", "false");
// objets pour gérer la connexion, la lecture et l'écriture
PrintWriter writer = null;
BufferedReader reader = null;
HttpURLConnection connexion = null;
Log.d("URL", urls[0] + "***********acceshttp***url de connexion*************");
// try {
// création de l'url à partir de l'adresse reçu en paramètre, dans urls[0]
URL url = null;
try {
url = new URL(urls[0]);
} catch (MalformedURLException malformedURLException) {
Log.d("acceshttp", "erreur URL" + malformedURLException.getMessage());
malformedURLException.printStackTrace();
}
// ouverture de la connexion
try {
connexion = (HttpURLConnection) url.openConnection();
connexion.setConnectTimeout(3000);
} catch (IOException ioException) {
Log.d("acceshttp", "erreur test internet" + ioException.getMessage());
ioException.printStackTrace();
}
try {
connexion.setDoOutput(true);
// choix de la méthode POST pour l'envoi des paramètres
connexion.setRequestMethod("POST");
connexion.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connexion.setFixedLengthStreamingMode(parametres.getBytes().length);
// création de la requete d'envoi sur la connexion, avec les paramètres
writer = new PrintWriter(connexion.getOutputStream());
writer.print(parametres);
Log.d("parametres envoyés = ", parametres + "***********acceshttp***************");
// Une fois l'envoi réalisé, vide le canal d'envoi
writer.flush();
// Récupération du retour du serveur
//Lignne 112
reader = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
ret = reader.readLine();
} catch (Exception e) {
Log.d("acceshttp", "erreur test internet" + e.getMessage());
Log.e("LOG_TAG", "Error checking internet connection", e);
} finally {
// fermeture des canaux d'envoi et de réception
try {
writer.close();
} catch (Exception e) {
}
try {
reader.close();
} catch (Exception e) {
}
}
return null;
}
/**
* Sur le retour du serveur, envoi l'information retournée à processFinish
*
* @param result
*/
@Override
protected void onPostExecute(Long result) {
// ret contient l'information récupérée
delegate.processFinish(this.ret.toString());
}
} |
Partager