2013-10-07 3 views
-3

Я вставляю данные из android в mysql с помощью php и json запроса. Когда огонь события вызывает исключение в logcat. Я делюсь своим clogcat с вами, так что вы можете иметь лучший вид и представление о том, что происходит, вот мой LogCat:Вставка в php из android

10-07 03: 55: 13,073: E/AndroidRuntime (1665): FATAL ИСКЛЮЧЕНИЕ : main 10-07 03: 55: 13.073: E/AndroidRuntime (1665): android.os.NetworkOnMainThreadException 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1133) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at java.net.InetAddress.lookupHostByName (InetAddress.java:385) 10-07 03:55 : 13.073: E/AndroidRuntime (1665): at java.net.InetAddress.ge tAllByNameImpl (InetAddress.java:236) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at java.net.InetAddress.getAllByName (InetAddress.java:214) 10-07 03: 55: 13.073 : E/AndroidRuntime (1665): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection (DefaultClientConnectionOperator.java:137) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at org .apache.http.impl.conn.AbstractPoolEntry.open (AbstractPoolEntry.java:164) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at org.apache.http.impl.conn.AbstractPooledConnAdapter. open (AbstractPooledConnAdapter.java:119) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at org.apache.http.impl.client.DefaultRequestDirector.execute (Defaul tRequestDirector.java:360) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:555) 10-07 03 : 55: 13.073: E/AndroidRuntime (1665): at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:487) 10-07 03: 55: 13.073: E/AndroidRuntime (1665) : at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:465) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at com.example.receiptorganizer.Registration $ 1 .insert (Registration.java:78) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at com.example.receiptorganizer.Registration $ 1.onClick (Registration.java:58) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at android.view.View.performClick (View.java:4240) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at android.view.View $ PerformClick.run (View.java:17721) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at android.os.Handler.handleCallback (Handler.java:730) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at android.os.Handler.dispatchMessage (Handler.java:92) 10-07 03: 55: 13.073: E/AndroidRuntime (1665) : at android.os.Looper.loop (Looper.java:137) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at android.app.ActivityThread.main (ActivityThread.java:5103) 10-07 03: 55: 13.07 3: E/AndroidRuntime (1665): at java.lang.reflect.Method.invokeNative (собственный метод) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at java.lang.reflect.Method .invoke (Method.java:525) 10-07 03: 55: 13.073: E/AndroidRuntime (1665): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:737) 10 -07 03: 55: 13.073: E/AndroidRuntime (1665): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) 10-07 03:55:13.073: E/AndroidRuntime (1665): в dalvik.system.NativeStart.main (Native Method)

+0

Я думаю, вы должны были приложить еще несколько усилий, прежде чем просить кого-то другого решить вашу проблему. Простое вложение 'android.os.NetworkOnMainThreadException' в Google предоставило бы вам ответ. Чтобы понять, пожалуйста, на странице [help] (http://stackoverflow.com/help). :) – Qben

ответ

1

Эта ошибка возникает, когда вы обращаетесь к сети вызова (выполнение WebService вызова) в главном потоке, т.е. в поток пользовательского интерфейса приложения.

Используйте AsyncTask или Handler для управления вызовом webservice.

увидеть это answer

Ваш асинхронной класс задача может быть, как это

class TheTask extends AsyncTask<Void,Void,Void> 
{ 
      protected void onPreExecute() 
      {   super.onPreExecute(); 
        //display progressdialog. 
      } 

      protected void doInBackground(Void ...params) 
      { 
       //http request. do not update ui here 

       return null; 
      } 

      protected void onPostExecute(Void result) 
      {  
        super.onPostExecute(result); 
        //dismiss progressdialog. 
        //update ui 
      } 

} 

о AsyncTask и Handler

И вы можете использовать обработчик, как это:

Handler handler = new Handler(); 
handler.post(new Runnable() { 

    @Override 
    public void run() { 
    // TODO Auto-generated method stub 
    // network call here 
     } 
    }); 

использования от AsyncTask - лучшее решение.

+0

спасибо, так что будет лучшим решением для этого? – geekdev786

+0

Я обновил ответ, пожалуйста, см. Его – Shruti

+0

@shurti спасибо прямо сейчас, я не получаю никаких исключений об ошибке, но симулятор сказал, что приложение перестало работать, поэтому из-за медленного интернета или любой другой проблемы? – geekdev786

0

Пожалуйста, посмотрите на это исключение в Google android.os.NetworkOnMainThreadException или просто следовать tutroial

0

использовать AsyncTask или тему для вызова веб-сервиса для передачи данных из приложения.

Смежные вопросы