Java 从Mysql Android获取数据
我有个问题。我想使用PhP从mysql数据库中获取数据,但出现以下错误: org.json.JSONException:W/System.err:at的字符0处输入结束 org.json.JSONTokener.syntaxError(JSONTokener.java:450)W/System.err:Java 从Mysql Android获取数据,java,android,mysql,json,android-asynctask,Java,Android,Mysql,Json,Android Asynctask,我有个问题。我想使用PhP从mysql数据库中获取数据,但出现以下错误: org.json.JSONException:W/System.err:at的字符0处输入结束 org.json.JSONTokener.syntaxError(JSONTokener.java:450)W/System.err: 位于org.json.JSONTokener.nextValue(JSONTokener.java:97)W/System.err: 在org.json.JSONObject.(JSONObje
位于org.json.JSONTokener.nextValue(JSONTokener.java:97)W/System.err:
在org.json.JSONObject.(JSONObject.java:156)W/System.err:
在org.json.JSONObject.(JSONObject.java:173)W/System.err:
在 neimantasjocius.com.justbeontop.LoginActivity.returnPoints(LoginActivity.java:123) W/System.err:at neimantasjocius.com.justbeontop.LoginActivity.access$100(LoginActivity.java:27) W/System.err:at neimantasjocius.com.justbeontop.LoginActivity$AsyncDataClass.onPostExecute(LoginActivity.java:99) W/System.err:at neimantasjocius.com.justbeontop.LoginActivity$AsyncDataClass.onPostExecute(LoginActivity.java:68) W/System.err:at-android.os.AsyncTask.finish(AsyncTask.java:632) W/System.err:at android.os.AsyncTask.access$600(AsyncTask.java:177)W/System.err:
在 android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) W/System.err:at android.os.Handler.dispatchMessage(Handler.java:102)W/System.err:
在android.os.Looper.loop(Looper.java:135)W/System.err:at main(ActivityThread.java:5272) W/System.err:at java.lang.reflect.Method.invoke(本机方法) W/System.err:at java.lang.reflect.Method.invoke(Method.java:372) W/System.err:at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) W/System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) W/ResourceType:获取资源值时没有包标识符 编号0x00000000 D/AndroidRuntime:正在关闭VM E/AndroidRuntime: 致命异常:主进程:neimantasjocius.com.justbeontop,PID: 30041 android.content.res.Resources$NotFoundException:字符串资源 位于android.content.res.Resources.getText(Resources.java:275)的ID#0x0 位于android.widget.TextView.setText(TextView.java:4261) neimantasjocius.com.justbeontop.LoginActivity$AsyncDataClass.onPostExecute(LoginActivity.java:101) 在 neimantasjocius.com.justbeontop.LoginActivity$AsyncDataClass.onPostExecute(LoginActivity.java:68) 位于android.os.AsyncTask.finish(AsyncTask.java:632) android.os.AsyncTask.access$600(AsyncTask.java:177) android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 位于android.os.Handler.dispatchMessage(Handler.java:102) Looper.loop(Looper.java:135)位于 main(ActivityThread.java:5272)位于 java.lang.reflect.Method.invoke(本机方法)位于 java.lang.reflect.Method.invoke(Method.java:372)位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 以下是我使用的代码:我标记了给出错误的行号。
private final String serverUrl = "http://*******.***"; // <---- 27
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Intent intent = getIntent();
Bundle intentBundle = intent.getExtras();
String loggedUser = intentBundle.getString("USERNAME");
loggedUser = capitalizeFirstCharacter(loggedUser);
TextView loginUsername = (TextView) findViewById(R.id.login_user);
loginUsername.setText(loggedUser);
AsyncDataClass asyncRequestObject = new AsyncDataClass();
asyncRequestObject.execute(serverUrl);
}
private class AsyncDataClass extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 5000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpPost httpPost = new HttpPost(params[0]);
String PointsString = "";
try {
HttpResponse response = httpClient.execute(httpPost);
PointsString = inputStreamToString(response.getEntity().getContent()).toString();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return PointsString;
} // <---- 68
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
int points = returnPoints(result);
TextView pointsText = (TextView)findViewById(R.id.pointsText);
pointsText.setText(points);
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = br.readLine()) != null) {
answer.append(rLine);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return answer;
}
}
private int returnPoints(String result){
JSONObject resultObject = null;
int returnedPoints = 0;
try { // <----- 99
resultObject = new JSONObject(result);
returnedPoints = resultObject.getInt("points"); // <--- 101
} catch (JSONException e) {
e.printStackTrace();
}
return returnedPoints;
}
private String capitalizeFirstCharacter(String textInput){
String input = textInput.toLowerCase();
String output = input.toUpperCase();
return output;
} // <-- Actually its 113 but error is given at 123
private final String serverUrl=“http://********”;//尝试打印原始JSON。看起来它是空的。在onCreate()
中初始化pointsText
TextView。当我在onCreate中初始化pointsText时,会出现新的错误。这是什么?xml中是否有TextView元素?是否可以在doInBackground{…Log.d(“原始结果”,PointsString.toString());return PointsString;}中打印原始JSON