Я попытался использовать объект AsyncTask
для подключения моего приложения к удаленному серверу. Вот мой код:probleme with AsyncTask: выполнить
public class ConnectServer extends AsyncTask<Void, Void, Void> {
String IP = "";
InputStream is = null;
JSONObject json_data = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
ArrayList<String> donnees = new ArrayList<String>();
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
IP = "http://192.168.101.1/fichier.php";
nameValuePairs.add(new BasicNameValuePair("nom", envois.nom));
nameValuePairs.add(new BasicNameValuePair("prenom", envois.prenom));
nameValuePairs.add(new BasicNameValuePair("nationalite", envois.nationalite));
nameValuePairs.add(new BasicNameValuePair("passeport", envois.passeport));
try {
//commandes httpClient
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(IP);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.i("tag", "depuis json");
}
catch (Exception e) {
Log.i("taghttppost", "" + e.toString());
Toast.makeText(c, e.toString(), Toast.LENGTH_LONG).show();
}
return null;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Toast.makeText(getApplicationContext(), "fin d'envoi", Toast.LENGTH_SHORT).show();
}
}
Тогда, когда я пытаюсь вызвать начать эту задачу, в моем onClick()
методе, как это:
public void onClick(View v) {
// TODO Auto-generated method stub
ConnectServer cs = new ConnectServer();
cs.execute((Void) null);
}
Это не работает. Я отлаживать его с затмением, я уверен, что ошибка приходят от этой линии:
cs.execute((Void)null);
Я пытаюсь заменить его
cs.execute();
Но ошибка не будет устранена. Debbuger дает мне что-то вроде:
Thread [<10> AsyncTask #1] (Suspended (exception RuntimeException))
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1086
ThreadPoolExecutor$Worker.run() line: 561
Thread.run() line: 1096
Thread [<12> AsyncTask #2] (Running)
Я хочу добавить, что мой код работает отлично, когда я использую его без AsyncTask
.
Почему у вас есть строки для ip, в глобальной переменной вы равны никому. – TheBlueCat
TheBluCat, я только что инициализировал IP, но это не проблема, becauz это сработало с этим, когда я удалил AsyncTask – sofo