UIスレッドでネットワーク関連のものを実行するべきではないことを知っているため、asynctaskを使用して、リモートサーバー上のphpを介してデータベースからいくつかのものを読み取ります。ただし、コードが --HttpResponse response = httpclient.execute(httppost); -- エラーが発生しています -- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 -- したがって、コードは機能しません。
このように asyncTask を呼び出していることに注意してください -- new dataRetrievalViaAsyncTask().execute(url,url,url); (2 番目と 3 番目の「url」は使用されないためダミーです) -- oncreate() 内。
そこに何が問題なのですか?
class dataRetrievalViaAsyncTask extends AsyncTask<String, String, String>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected String doInBackground(String... f_url)
{
Log.i("tag", "inside doInBackground");
String url2 = f_url[0];
Log.i("tag", url2);
HttpClient httpclient = new DefaultHttpClient();
Log.i("tag", "done : HttpClient httpclient = new DefaultHttpClient();");
HttpPost httppost = new HttpPost(url2);
Log.i("tag", "done : HttpPost httppost = new HttpPost(url);");
try
{
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.i("tag", "done : httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));");
HttpResponse response = httpclient.execute(httppost);
Log.i("tag", "done : HttpResponse response = httpclient.execute(httppost);");
HttpEntity entity = response.getEntity();
Log.i("tag", "done : HttpEntity entity = response.getEntity();");
is = entity.getContent();
Log.i("tag", "after : is = entity.getContent();");
} catch (Exception e)
{
Log.e("log_tag", "Error in http connection" + e.toString());
}
// convert response to string
return "a";
}
@Override
protected void onPostExecute(String result)
{
// enter code here
}
}