我在運行應用程序時崩潰了。
這裏的一些信息細節我的應用程序代碼
JSON Android java.lang.NullPointerException
LDActivity.Java
public class LDActivity extends Activity {
private ProgressDialog pDialog, cDialog;
JSONParser jsonParser = new JSONParser();
GlobalVar gvar;
private static final String LOGIN_URL = "http://deka.esy.es/track_api/";
private boolean isDualSIM;
private String iSIM1;
private String iSIM2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ld);
TelephonyInfo tf = TelephonyInfo.getInstance(this);
gvar = ((GlobalVar)getApplicationContext());
isDualSIM = tf.isDualSIM(); gvar.setisDualSIM(isDualSIM);
iSIM1 = tf.getImeiSIM1(); gvar.setiSIM1(iSIM1);
iSIM2 = tf.getImeiSIM2(); gvar.setiSIM2(iSIM2);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
new SessionCheck().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
new SessionCheck().execute();
}
private class SessionCheck extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
cDialog = new ProgressDialog(LDActivity.this);
cDialog.setMessage("Please wait checking login...");
cDialog.setIndeterminate(false);
cDialog.setCancelable(false);
cDialog.show();
}
@Override
protected String doInBackground(String... args) {
int csuccess;
Boolean cDualSIM = gvar.getisDualSIM();
String cIMEIPhone1, cIMEIPhone2 = "";
if(cDualSIM) {
cIMEIPhone1 = gvar.getiSIM1();
cIMEIPhone2 = gvar.getiSIM2();
} else
cIMEIPhone1 = gvar.getiSIM1();
try {
List<NameValuePair> cIMEI = new ArrayList<NameValuePair>();
cIMEI.add(new BasicNameValuePair("tag", TAG_SESI));
cIMEI.add(new BasicNameValuePair("isim1", cIMEIPhone1));
if(cDualSIM)
cIMEI.add(new BasicNameValuePair("isim2", cIMEIPhone2));
JSONObject cjson = jsonParser.makeHttpRequest(LOGIN_URL, "POST", cIMEI);
//Log.d("Session Check ", json.toString());
csuccess = cjson.getInt(KEY_SUCCESS);
if (csuccess == 1) {
/*Intent dekatrack = new Intent(getApplicationContext(), DekaTrack.class);
dekatrack.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(dekatrack);*/
return cjson.getString(KEY_SUCCESS_MSG);
} else
return cjson.getString(KEY_ERROR_MSG);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String cjson_msg) {
cDialog.dismiss();
if (cjson_msg != null) {
Toast cts = Toast.makeText(LDActivity.this, cjson_msg, Toast.LENGTH_LONG);
cts.setGravity(Gravity.TOP, 0, 50);
cts.show();
}
}
}
}
JSON的index.php
<?php header('content-type: application/json; charset=utf-8');
if (isset($_POST['tag']) && $_POST['tag'] != '') {
$tag = $_POST['tag'];
require_once 'lib/db_inc.php';
$db = new DB_Functions();
$response = array("tag" => $tag, "sukses" => 0, "error" => 0);
$isim1 = $_POST['isim1'];
$isim2 = $_POST['isim2'];
if ($tag == 'sesi') {
$session1 = $db->getSession($isim1);
if(empty($isim2))
$session2 = "0";
else
$session2 = $db->getSession($isim2);
if($session1 == "1" || $session2 == "1") {
$response["sukses"] = 1;
$response["sukses_msg"] = "Auto login!";
} else if ($session1 == "0" || $session2 == "0") {
$response["error"] = 1;
$response["error_msg"] = "Silahkan login!";
} else {
$response["error"] = 2;
$response["error_msg"] = "Silahkan daftar!";
}
} else
echo "Permintaan akses gagal!";
} else
echo "Permintaan akses ditolak!";
?>
錯誤的logcat
01-15 10:11:39.343: E/JSON Parser(1331): Error parsing data org.json.JSONException: End of input at character 0 of
01-15 10:11:39.453: E/AndroidRuntime(1331): FATAL EXCEPTION: AsyncTask #1
01-15 10:11:39.453: E/AndroidRuntime(1331): java.lang.RuntimeException: An error occured while executing doInBackground()
01-15 10:11:39.453: E/AndroidRuntime(1331): at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.lang.Thread.run(Thread.java:856)
01-15 10:11:39.453: E/AndroidRuntime(1331): Caused by: java.lang.NullPointerException
01-15 10:11:39.453: E/AndroidRuntime(1331): at com.skripsi.dekatrack.LDActivity$SessionCheck.doInBackground(LDActivity.java:143)
01-15 10:11:39.453: E/AndroidRuntime(1331): at com.skripsi.dekatrack.LDActivity$SessionCheck.doInBackground(LDActivity.java:1)
01-15 10:11:39.453: E/AndroidRuntime(1331): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-15 10:11:39.453: E/AndroidRuntime(1331): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-15 10:11:39.453: E/AndroidRuntime(1331): ... 4 more
DB功能
public function getSession($imei) {
$result = mysql_query("SELECT session FROM login WHERE imei = '$imei'") or die(mysql_error());
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
return $result['session'];
} else {
return false;
}
}
我的信息表登錄
table login
我在編程的Android新手,還在學習..
請幫我什麼地方錯了我代碼..
編輯:現在正在工作
只是死die(json_encode($ response));在響應JSON代碼和有點扭捏代碼結束..
<?php header('content-type: application/json; charset=utf-8');
if (isset($_POST['tag']) && $_POST['tag'] != '') {
$tag = $_POST['tag'];
require_once 'lib/db_inc.php';
$db = new DB_Functions();
$response = array("tag" => $tag, "sukses" => 0, "error" => 0);
$isim1 = $_POST['isim1'];
$isim2 = $_POST['isim2'];
$session1 = $db->getSession($isim1);
$session2 = $db->getSession($isim2);
if ($tag == 'sesi') {
if(!empty($session1) || !empty($session2)) {
if($session1 == "1" || $session2 == "1") {
$response["sukses"] = 1;
$response["sukses_msg"] = "Auto login!";
die(json_encode($response));
} else if ($session1 == "0" || $session2 == "0") {
$response["error"] = 1;
$response["error_msg"] = "Silahkan login!";
die(json_encode($response));
} else {
$response["error"] = 2;
$response["error_msg"] = "Silahkan daftar!";
die(json_encode($response));
}
} else {
$response["error"] = 1;
$response["error_msg"] = "HP anda rusak!";
die(json_encode($response));
}
} else
echo "Permintaan akses gagal!";
} else
echo "Permintaan akses ditolak!";
?>
THX的所有幫助我同意你的建議
請粘貼你的json響應字符串.. –
我不知道如何得到json響應字符串..你能解釋一下這一步嗎? –
兄弟你的網址回覆 –