2013-12-13 2 views
-1

Хорошо, я нахожу много людей с одинаковой проблемой, но пока я не смог найти хороший ответ. Я делаю простой httprequest с парсером JSON, но im получаю эту ошибку: 12-13 17: 11: 35.406: E/AndroidRuntime (28346): FATAL EXCEPTION: AsyncTask # 1 12-13 17: 11: 35.406: E/AndroidRuntime (28346): java.lang.RuntimeException: Произошла ошибка во время выполнения doInBackground() 12-13 17: 11: 35.406: E/AndroidRuntime (28346): at android.os.AsyncTask $ 3.done (AsyncTask. java: 278)Ошибка при выполнении функции в AsyncTask doInBackground JsonParser/PHP

Я действительно потерян. У кого-нибудь есть ответ?

вот мой код: Java: Main Ac.

import java.text.DateFormat; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 
import java.util.Random; 
import java.util.Vector; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 


import com.exemple.beans.MesaBean; 
import com.exemple.json.JSONParser; 

public class MainActivity extends Activity { 
    public static final String ESTABELECIMENTO = "NossoBar"; 
    JSONParser jsonParser = new JSONParser(); 
    EditText numeroMesa; 
    private ProgressDialog pDialog; 
    Button criar; 
    private static String url_create_product = "http://www.naga.net.br/android/beerapp/delete_product.php"; 
    private static final String TAG_SUCCESS = "success"; 
    public static Vector<MesaBean> mesas; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     criar = (Button) findViewById(R.id.btncriar); 
     numeroMesa = (EditText) findViewById(R.id.numeroMesa); 
     if (mesas == null) { 
      mesas = new Vector<MesaBean>(); 

     } 

     criar.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       int numero = Integer.valueOf(numeroMesa.getText().toString()); 
       String senha = gerarsenha(); 
       int id = mesas.size()+1; 
       String currentDateTimeString = DateFormat 
         .getDateTimeInstance().format(new Date()); 

       MesaBean mb = new MesaBean(); 
       mb.setCriadoEm(currentDateTimeString); 
       mb.setIdmesa(id); 
       mb.setSenha(senha); 
       mb.setMesa(numero); 
       mesas.add(mb); 
       String resp = ESTABELECIMENTO+numero+senha; 

       new CreateNewProduct(resp).execute(); 



      } 
     }); 


    } 

    class CreateNewProduct extends AsyncTask<String, String, String> { 

     String resp; 

     CreateNewProduct() { 

     } 

     public CreateNewProduct(String resp) { 
      this.resp = resp; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Postando comparação..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     /** 
     * Creating product 
     * */ 
     protected String doInBackground(String... args) { 

      // getting JSON Object 
      try { 
      // Note that create product url accepts POST method 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("mesaconta", resp)); 
      params.add(new BasicNameValuePair("lalal", "lalal")); 
      JSONObject json = jsonParser.makeHttpRequest(url_create_product, 
        "POST", params); 

      // check log cat fro response 
      Log.d("Create Response", json.toString()); 

      // check for success tag 

       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 

        resp = "Sucess"; 

       } else { 

        resp = "Fail"; 
       } 
      } catch (JSONException e) { 
       startActivity(new Intent(getApplicationContext(), 
         MainActivity.class)); 
      } 

      if (resp.equalsIgnoreCase("Sucess")) { 

       // closing this screen 
       startActivity(new Intent(getApplicationContext(), 
         ListaMesas.class)); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog once done 
      pDialog.dismiss(); 
     } 

    } 

    private String gerarsenha() { 
     int min = 0; 
     int max = 9; 

     Random r = new Random(); 
     Integer a = r.nextInt(max - min + 1) + min; 
     Integer b = r.nextInt(max - min + 1) + min; 
     Integer c = r.nextInt(max - min + 1) + min; 
     Integer d = r.nextInt(max - min + 1) + min; 
     Integer e = r.nextInt(max - min + 1) + min; 
     Integer f = r.nextInt(max - min + 1) + min; 

     String resp = a.toString() + b.toString() + c.toString() + d.toString() 
       + e.toString() + f.toString(); 
     return resp; 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

JsonParser:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.List; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.utils.URLEncodedUtils; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.util.Log; 

public class JSONParser { 

    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 

    // constructor 
    public JSONParser() { 

    } 

    // function get json from url 
    // by making HTTP POST or GET mehtod 
    public JSONObject makeHttpRequest(String url, String method, 
      List<NameValuePair> params) { 

     // Making HTTP request 
     try { 

      // check for request method 
      if(method == "POST"){ 
       // request method is POST 
       // defaultHttpClient 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(url); 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 

       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 

      }else if(method == "GET"){ 
       // request method is GET 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       String paramString = URLEncodedUtils.format(params, "utf-8"); 
       url += "?" + paramString; 
       HttpGet httpGet = new HttpGet(url); 

       HttpResponse httpResponse = httpClient.execute(httpGet); 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 
      }   


     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jObj; 

    } 
} 

код в PHP на сервере Allready работает отлично, им использовать его в другой программе. Вы можете мне помочь?

Полный tracktrace:

12-13 18:03:06.516: E/JSON Parser(31184): Error parsing data org.json.JSONException: End of input at character 1 of 
12-13 18:03:06.516: W/dalvikvm(31184): threadid=11: thread exiting with uncaught exception (group=0x41a0b6f0) 
12-13 18:03:06.546: E/AndroidRuntime(31184): FATAL EXCEPTION: AsyncTask #1 
12-13 18:03:06.546: E/AndroidRuntime(31184): java.lang.RuntimeException: An error occured while executing doInBackground() 
12-13 18:03:06.546: E/AndroidRuntime(31184): at android.os.AsyncTask$3.done(AsyncTask.java:278) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.lang.Thread.run(Thread.java:856) 
12-13 18:03:06.546: E/AndroidRuntime(31184): Caused by: java.lang.NullPointerException 
12-13 18:03:06.546: E/AndroidRuntime(31184): at com.example.gerente2.MainActivity$CreateNewProduct.doInBackground(MainActivity.java:117) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at com.example.gerente2.MainActivity$CreateNewProduct.doInBackground(MainActivity.java:1) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
12-13 18:03:06.546: E/AndroidRuntime(31184): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-13 18:03:06.546: E/AndroidRuntime(31184): ... 4 more 
12-13 18:03:07.306: W/IMGSRV(31184): :0: gralloc_unregister_buffer: ID: 3355 handle: 0x866bf70 size: 540 x 888 fmt: 2 usage: 0x933 
12-13 18:03:07.306: W/IMGSRV(31184): :0: gralloc_unregister_buffer: ID: 3356 handle: 0x86bfa60 size: 540 x 888 fmt: 2 usage: 0x933 
12-13 18:03:07.316: W/IMGSRV(31184): :0: gralloc_unregister_buffer: ID: 3359 handle: 0x8649a10 size: 392 x 175 fmt: 1 usage: 0x933 
12-13 18:03:07.316: W/IMGSRV(31184): :0: gralloc_unregister_buffer: ID: 3360 handle: 0x8669800 size: 392 x 175 fmt: 1 usage: 0x933 
12-13 18:03:08.006: E/WindowManager(31184): Activity com.example.gerente2.MainActivity has leaked window [email protected] that was originally added here 
12-13 18:03:08.006: E/WindowManager(31184): android.view.WindowLeaked: Activity com.example.gerente2.MainActivity has leaked window [email protected] that was originally added here 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:356) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.Window$LocalWindowManager.addView(Window.java:537) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.app.Dialog.show(Dialog.java:284) 
12-13 18:03:08.006: E/WindowManager(31184):  at com.example.gerente2.MainActivity$CreateNewProduct.onPreExecute(MainActivity.java:99) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.os.AsyncTask.execute(AsyncTask.java:511) 
12-13 18:03:08.006: E/WindowManager(31184):  at com.example.gerente2.MainActivity$1.onClick(MainActivity.java:70) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.View.performClick(View.java:3531) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.view.View$PerformClick.run(View.java:14224) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.os.Handler.handleCallback(Handler.java:605) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.os.Looper.loop(Looper.java:137) 
12-13 18:03:08.006: E/WindowManager(31184):  at android.app.ActivityThread.main(ActivityThread.java:4699) 
12-13 18:03:08.006: E/WindowManager(31184):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-13 18:03:08.006: E/WindowManager(31184):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-13 18:03:08.006: E/WindowManager(31184):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
12-13 18:03:08.006: E/WindowManager(31184):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
12-13 18:03:08.006: E/WindowManager(31184):  at dalvik.system.NativeStart.main(Native Method) 
+0

Опубликовать полный след стека. – Raghunandan

+0

ОК, что это ... – user3100578

ответ

0

Вы проверили строку, вы получаете обратно с этого сервера?

Error parsing data org.json.JSONException: End of input at character 1 

Означает, что вы получаете пустой ответ с сервера.

+0

Ницца! Благодаря! Я не могу верить, так просто ... – user3100578

+0

ОК, теперь сервер отвечает, беря это: Ошибка анализа данных org.json.JSONException: Значение user3100578

+0

Я не знаю, где искать ошибку. Мой Java-код кажется прекрасным. Другой erro состоял в том, что у моего пользователя нет разрешений, но я уже исправил. Теперь я потерял igain – user3100578

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