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();
しかし、エラーは解決しません。デバッガーは私に次のようなものを与えます:
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
。