2015-03-17 2 views
0

Эй У меня проблема с моим приложением, которое я не могу решить, я пробовал все, что знал о Async Task, но я не очень хорош в этом.Android Неустранимая ошибка: Async Task

Ошибка:

03-17 19:43:38.794 1662-1681/com.cwpsiproject E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #5 
    java.lang.RuntimeException: An error occured while executing doInBackground() 
      at android.os.AsyncTask$3.done(AsyncTask.java:299) 
      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
      at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
      at java.lang.Thread.run(Thread.java:856) 
    Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 72: http://sqlphptry.co.nf/createUser.php?teamName=vcxvxcvcxvxcvxc&game=COD: AW&consola=Xbox One 
      at java.net.URI.create(URI.java:727) 
      at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75) 
      at com.cwpsiproject.ApiConnector.createTeam(ApiConnector.java:196) 
      at com.cwpsiproject.CreateTeamActivity$createTeamTask.doInBackground(CreateTeamActivity.java:131) 
      at com.cwpsiproject.CreateTeamActivity$createTeamTask.doInBackground(CreateTeamActivity.java:124) 
      at android.os.AsyncTask$2.call(AsyncTask.java:287) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
            at java.lang.Thread.run(Thread.java:856) 

Код CreateTeamTask:

private class createTeamTask extends AsyncTask<ApiConnector,Long,JSONArray> { 
     @Override 
     protected JSONArray doInBackground(ApiConnector... params) { 
      // it is executed on Background thread 
      String teamName = f.getTeamNameC(); // returns string with teamName 
      String game = f.getGameC(); // returns string with game 
      String consola = f.getConsoleC(); // returns string with console 
      return params[0].createTeam(teamName, game, consola); 
     } 
     @Override 
     protected void onPostExecute(JSONArray jsonArray) { 
      Toast.makeText(CreateTeamActivity.this, "Team Successfully Created!", Toast.LENGTH_SHORT).show(); 
     } 
    } 


ApiConnector код:

public JSONArray createTeam(String teamName, String game, String consola) { 
    String url = "http://sqlphptry.co.nf/createUser.php?teamName="+teamName+"&game="+game+"&consola="+consola; 
    // Get HttpResponse Object from url. 
    // Get HttpEntity from Http Response Object 
    HttpEntity httpEntity = null; 
    try { 
     DefaultHttpClient httpClient = new DefaultHttpClient(); // Default HttpClient 
     HttpGet httpGet = new HttpGet(url); 
     HttpResponse httpResponse = httpClient.execute(httpGet); 
     httpEntity = httpResponse.getEntity(); 
    } catch (ClientProtocolException e) { 
     // Signals error in http protocol 
     e.printStackTrace(); 
     //Log Errors Here 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    // Convert HttpEntity into JSON Array 
    JSONArray jsonArray = null; 
    if (httpEntity != null) { 
     try { 
      String entityResponse = EntityUtils.toString(httpEntity); 
      Log.e("Entity Response : ", entityResponse); 
      jsonArray = new JSONArray(entityResponse); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return jsonArray; 
} 

PHPCode:

include 'connection.php'; 


    if (isset($_GET['teamName']) && isset($_GET['game']) && isset($_GET['consola'])) { 
       $teamName = $_GET['teamName']; 
       $game = $_GET['game']; 
       $consola = $_GET['consola']; 
       $teamName = mysql_real_escape_string($teamName); 
       $game = mysql_real_escape_string($game); 
       $consola = mysql_real_escape_string($consola); 

     mysql_query("INSERT INTO `team_data` (`teamName`, `game`, `console`) VALUES('$teamName','$game','$consola')"); 

       print('[{"created":"'.$teamName.'"}]'); 
    } 

     mysql_close($dbhandle); 

Может кто-нибудь, пожалуйста, помогите мне с этим? Я застрял в этой ошибке, смешно, что у меня есть почти тот же код для регистрации пользователя, и он не дает этой ошибки.

спасибо за время.

+0

Можете ли вы пройти фактической ошибки в ваш пост вместо скриншот? – codeMagic

+0

@codeMagic сделано, извините, я думал, что изображение будет хорошо видеть – Matthew

ответ

1

У вас есть незаконные символы в вашем Url (в основном, пробелы и двоеточие), вы должны убедиться, что используете правильную кодировку url. Простым способом добиться этого будет использование Uri.Builder() для создания вашего URL-адреса.

Edit:

В вашем исключения, это показывает следующий URL бросает ошибку: "http://sqlphptry.co.nf/createUser.php?teamName=vcxvxcvcxvxcvxc&game=COD: AW & consola = Xbox One". Обратите внимание, что даже здесь, как показано здесь, первый незаконный символ нарушает гиперссылку.

Чтобы дезинфицировать этот URL, необходимо правильно добавить параметры запроса, например, с использованием вышеуказанного URL:

Uri.Builder builder = Uri.parse("http://sqlphptry.co.nf/createUser.php").buildUpon(); 
     builder.appendQueryParameter("teamName", "vcxvxcvcxvxcvxc"); 
     builder.appendQueryParameter("game", "COD: AW"); 
     builder.appendQueryParameter("consola", "Xbox One"); 

    String url = builder.build().toString(); 

Результат: http://sqlphptry.co.nf/createUser.php?teamName=vcxvxcvcxvxcvxc&game=COD%3A%20AW&consola=Xbox%20One

+0

Как использовать Uri.Builder()? извините, я новичок в этом: x – Matthew

+0

См. редактирование в один момент для уточнения. – Submersed

+0

Спасибо вам, что вы спасли мою жизнь: p – Matthew