Java 从phpMyAdmin返回JSON时出现Android NullPointerException
我在Android编程中尝试将phpMyAdmin与MySQL数据库连接时遇到了一些问题。下面是我试图从php方法中获取返回结果的部分:Java 从phpMyAdmin返回JSON时出现Android NullPointerException,java,php,android,json,Java,Php,Android,Json,我在Android编程中尝试将phpMyAdmin与MySQL数据库连接时遇到了一些问题。下面是我试图从php方法中获取返回结果的部分: public boolean getLogin(UserModel userModel) { String username = userModel.getUserName(); String password = userModel.getPassword(); List<NameValuePair> params = n
public boolean getLogin(UserModel userModel) {
String username = userModel.getUserName();
String password = userModel.getPassword();
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
params.add(new BasicNameValuePair("getlogin", "1"));
params.add(new BasicNameValuePair("userid", username));
params.add(new BasicNameValuePair("password", password));
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
return true;
}
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
并将错误消息作为堆栈跟踪:
02-14 21:57:19.967: D/dalvikvm(29822): GC_FOR_ALLOC freed 70K, 11% free 9471K/10567K, paused 18ms
02-14 21:57:19.975: I/dalvikvm-heap(29822): Grow heap (frag case) to 10.680MB for 589840-byte allocation
02-14 21:57:19.999: D/dalvikvm(29822): GC_CONCURRENT freed 1K, 11% free 10045K/11207K, paused 1ms+2ms
02-14 21:57:20.147: D/TextLayoutCache(29822): Using debug level: 0 - Debug Enabled: 0
02-14 21:57:20.257: D/CLIPBOARD(29822): Hide Clipboard dialog at Starting input: finished by someone else... !
02-14 21:57:35.272: I/URL(29822): http://192.168.0.101/lms/dataprocess.php
02-14 21:57:36.483: E/JSON Parser(29822): Error parsing data org.json.JSONException: End of input at character 0 of
02-14 21:57:36.491: W/dalvikvm(29822): threadid=11: thread exiting with uncaught exception (group=0x40c341f8)
02-14 21:57:36.632: E/AndroidRuntime(29822): FATAL EXCEPTION: AsyncTask #1
02-14 21:57:36.632: E/AndroidRuntime(29822): java.lang.RuntimeException: An error occured while executing doInBackground()
02-14 21:57:36.632: E/AndroidRuntime(29822): at android.os.AsyncTask$3.done(AsyncTask.java:278)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-14 21:57:36.632: E/AndroidRuntime(29822): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.lang.Thread.run(Thread.java:856)
02-14 21:57:36.632: E/AndroidRuntime(29822): Caused by: java.lang.NullPointerException
02-14 21:57:36.632: E/AndroidRuntime(29822): at Controller.UserController.getLogin(UserController.java:47)
02-14 21:57:36.632: E/AndroidRuntime(29822): at AsyncTask.GetLoginAsyncTask.doInBackground(GetLoginAsyncTask.java:22)
02-14 21:57:36.632: E/AndroidRuntime(29822): at AsyncTask.GetLoginAsyncTask.doInBackground(GetLoginAsyncTask.java:1)
02-14 21:57:36.632: E/AndroidRuntime(29822): at android.os.AsyncTask$2.call(AsyncTask.java:264)
02-14 21:57:36.632: E/AndroidRuntime(29822): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-14 21:57:36.632: E/AndroidRuntime(29822): ... 5 more
02-14 21:57:45.366: I/Process(29822): Sending signal. PID: 29822 SIG: 9
空指针异常部分位于那里的try-catch。
有什么想法吗?提前谢谢
从浏览器访问url时,返回的数据如下:
{"success":1}
您实际上并不是在发出web请求。您所犯的错误是,您直接尝试解析JSON,而没有发出实际的web请求 错误:
检查此问题,根据您的要求获取参考资料并编写代码。UserController中第47行的内容是什么?@android\u dev int success=json.getIntTAG\u success;
{"success":1}
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
params.add(new BasicNameValuePair("getlogin", "1"));
params.add(new BasicNameValuePair("userid", username));
params.add(new BasicNameValuePair("password", password));
try {
int success = json.getInt(TAG_SUCCESS);
// Here 'json' is an object you are required to pass in a request
// you are making a web request and without it, you are trying to parse it, which is actually not the response you are expecting from server
if (success == 1) {
return true;
}
} catch (JSONException e) {
e.printStackTrace();
}