Хорошо, я нахожу много людей с одинаковой проблемой, но пока я не смог найти хороший ответ. Я делаю простой 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)
Опубликовать полный след стека. – Raghunandan
ОК, что это ... – user3100578