J'essaie de faire un utilitaire httpClient classeAsyncTask ne fonctionne que la première fois
Mon code fonctionne très bien la première exécution. Lors du débogage, la seconde exécution n'interviendra pas, ou n'exécutera pas, donc quelque chose est foiré.
L'activité/Listener
protected String getPage(String url, List<NameValuePair> namevaluePairs, String postOrGet, Activity whichActivity, String dialogText) {
try {
httpHelper.setListValues(namevaluePairs);
httpHelper.setPostOrGet(postOrGet);
httpHelper.setParentActivity(whichActivity);
httpHelper.setDialogText(dialogText);
httpHelper.execute(url);
} catch (Exception e) {
e.printStackTrace();
}
return resultHTML;
}
La classe utilitaire:
public class HTTPHelper extends AsyncTask<String, Void, Void> {
private String resultString;
private HttpClient httpclient;
private List<NameValuePair> nameValuePairs;
private String postOrGet;
private Activity parentActivity;
private String Error;
private String dialogText;
private ProgressDialog Dialog;
WebServiceListener listener;
public HTTPHelper(WebServiceListener listener) {
this.listener = listener;
Error = null;
httpclient = new DefaultHttpClient();
postOrGet = "get";
nameValuePairs = null;
dialogText = "Logging in";
}
@Override
public void onPreExecute() {
super.onPreExecute();
Error = null;
Dialog.setMessage(dialogText);
Dialog.show();
}
@Override
public void onPostExecute(Void unused) {
Dialog.dismiss();
if (Error != null) {
Toast.makeText(parentActivity, Error, Toast.LENGTH_LONG).show();
} else {
ArrayList<String> myList = new ArrayList<String>();
myList.add(resultString);
listener.onHTTPGetComplete(myList);
}
}
public void setDialogText(String txt) {
dialogText = txt;
}
public void setListValues(List<NameValuePair> incNameValuePairs) {
nameValuePairs = incNameValuePairs;
}
public void setPostOrGet(String pOrG) {
postOrGet = pOrG;
}
public void setParentActivity(Activity myAct) {
parentActivity = myAct;
Dialog = new ProgressDialog(parentActivity);
}
@Override
protected Void doInBackground(String... urls) {
BufferedReader in = null;
try {
HttpGet httpget = new HttpGet(urls[0]);
HttpPost httppost = new HttpPost(urls[0]);
HttpResponse response = null;
if (postOrGet.toLowerCase().contains("post")) {
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
response = httpclient.execute(httppost);
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
response = httpclient.execute(httpget);
} catch (IOException e) {
e.printStackTrace();
}
}
try {
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
} catch (IOException e) {
e.printStackTrace();
}
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
try {
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
resultString = sb.toString();
return null;
} finally {
}
}
}
A travaillé comme un champion. Merci Ravi et Haphazard. Je vous avais upvote les deux mais je n'ai pas encore assez de points. – kireol
@ user763472 Vous devez accepter une bonne réponse et non seulement l'augmenter. Je ne pense pas que vous ayez besoin de points pour accepter la réponse à votre question. Accepter les réponses encouragera les gens à vous aider. –
Salut Ravi, je l'ai fait la même chose, mais ce ne sont pas WORKING 'public void onClick (Voir v) { \t \t \t \t \t index int = groupPos; // lire maintenant le champ mChildStates correspondant et traiter les données. \t \t \t \t \t \t \t \t \t \t booléenne chBoxesState [] = mChildCheckStates.get (index); \t \t \t \t \t // envoyer ces données à AVAL \t \t \t \t \t Log.d ("On clique Vinit", "Je suis ici"); \t \t \t \t \t RequestCloser reqCloser = null; \t \t \t \t \t reqCloser = nouveau RequestCloser(); \t \t \t \t \t reqCloser.execute (chBoxesState); \t \t \t \t} 'Pouvez-vous m'aider s'il vous plaît – codeomnitrix