Почему эта фоновая задача завершилась неудачной ошибкой?

Следующий код в моей MainActivity не работает с фатальным исключением в переопределенном doInBackground () методе:

public class MainActivity extends ActionBarActivity { . . . public void onFetchBtnClicked(View v){ if(v.getId() == R.id.FetchBtn){ Toast.makeText(getApplicationContext(), "You mashed the button, dude.", Toast.LENGTH_SHORT).show(); new NetworkTask().execute(); } } public static class NetworkTask extends AsyncTask<String, Void, HttpResponse> { @Override protected HttpResponse doInBackground(String... params) { String link = params[0]; HttpGet request = new HttpGet("http://localhost:28642/api/deliveries/Count"); AndroidHttpClient client = AndroidHttpClient.newInstance("Android"); try { return client.execute(request); } catch (IOException e) { e.printStackTrace(); return null; } finally { client.close(); } } @Override protected void onPostExecute(HttpResponse result) { FileOutputStream f = null; //Do something with result if (result != null) /* result.getEntity().writeTo(new FileOutputStream(f)); */ try { result.getEntity().writeTo(f); } catch (IOException e) { e.printStackTrace(); } } } 

Конкретные сообщения об исключениях с помощью smidgin из контекста исключения исключений:

 03-31 18:04:26.350 1401-1401/hhs.app I/Choreographer﹕ Skipped 33 frames! The application may be doing too much work on its main thread. 03-31 18:05:00.030 1401-1420/hhs.app W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0xb2a7aba8) 03-31 18:05:00.250 1401-1420/hhs.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: hhs.app, PID: 1401 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at hhs.app.MainActivity$NetworkTask.doInBackground(MainActivity.java:68) at hhs.app.MainActivity$NetworkTask.doInBackground(MainActivity.java:64) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237)            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)            at java.lang.Thread.run(Thread.java:841) 

В чем проблема с этим – он не работает на git-go doInBackground (). Является ли мой URL «плохим» из-за ударов (в C #, я бы использовал строку verbatim), или …?

ОБНОВИТЬ

Я удалил проблемную строку, но она все равно не срабатывает, бросая исключение IOException.

Я действительно переключил передачу на совершенно другой код, как можно увидеть здесь [Почему я получаю », несовместимые типы: Объект не может быть преобразован в String» с этим? (Который бросал NetworkOnMainThreadException), но когда это не удалось, я решил дать этому коду еще один шанс, но блок «catch (IOException e)» введен.

Кто-нибудь знает, почему?

Это исключение:

 Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 

Говорит вам, что вы получаете доступ к пустому массиву с индексом 0, в этой строке:

 protected HttpResponse doInBackground(String... params) { String link = params[0]; 

Nota, что после назначения вы не используете переменную ссылки нигде (или параметры).

Вы забыли передать какие-либо параметры в свою AsyncTask здесь:

  new NetworkTask().execute(); 

Вот почему ваш массив пуст:

  String link = params[0]; 

==> передать параметр во время выполнения AsyncTask:

  new NetworkTask().execute(someLink); //execute AsyncTask with one param 

Обновление: на самом деле кажется, что вы ничего не делаете со String link в методе doInBackground. Так может быть, вы можете просто избавиться от этой линии?