Android 从我的URL解析JSON数据时出错
我正在开发一个基于远程数据库的android应用程序,我找到了如何将数据放入数据库的解决方案,但我在取回数据方面遇到了很多问题。 当我打开获取数据的活动时,应用程序崩溃。我无法定位错误在我的代码中的位置!!这是我的代码,希望你能帮助我。 多谢各位 这是“Acceuil”类,有一个按钮打开“Professors”类Android 从我的URL解析JSON数据时出错,android,json,Android,Json,我正在开发一个基于远程数据库的android应用程序,我找到了如何将数据放入数据库的解决方案,但我在取回数据方面遇到了很多问题。 当我打开获取数据的活动时,应用程序崩溃。我无法定位错误在我的代码中的位置!!这是我的代码,希望你能帮助我。 多谢各位 这是“Acceuil”类,有一个按钮打开“Professors”类 导入android.app.Activity; 导入android.content.Intent; 导入android.os.Bundle; 导入android.view.view;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
//在这个类中,我只是定义了一个按钮,它将打开另一个类以从数据库中获取数据。
公共类Acceuil扩展活动{
按钮b1;
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.acceuil);
b1=(按钮)findViewById(R.id.button3);
b1.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
Intent i=新的Intent(getApplicationContext(),Professors.class);
星触觉(i);
}
});
}
}
网络操作可能涉及不可预测的延迟。为了防止这种情况造成糟糕的用户体验,请始终在UI的单独线程上执行网络操作。AsyncTask类提供了从UI线程启动新任务的最简单方法之一
您正在主线程中进行联网。你需要先解决这个问题 使用异步任务 例如:
private TextView uid; // Define global
立即创建
uid = (TextView)findViewById(R.id.pro1);
new MyAsyncTask().execute();
内部阶级
public class MyAsyncTask extends AsyncTask<Void, Void, String> {
@Override
public String doInBackground(Void a) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting JSON Array
user = json.getJSONArray(TAG_USER);
JSONObject c = user.getJSONObject(0);
// Storing JSON item in a Variable
String id = c.getString(TAG_ID);
return id;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
public void onPostExecute(String result) {
uid.setText(result);
}
}
公共类MyAsyncTask扩展了AsyncTask{
@凌驾
公共字符串doInBackground(无效a){
JSONParser jParser=新的JSONParser();
//从URL获取JSON
JSONObject json=jParser.getJSONFromUrl(url);
试一试{
//获取JSON数组
user=json.getJSONArray(TAG_user);
JSONObject c=user.getJSONObject(0);
//在变量中存储JSON项
String id=c.getString(TAG_id);
返回id;
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
public void onPostExecute(字符串结果){
uid.setText(结果);
}
}
请将您收到的错误与logcat输出一起发布为什么不先发布据称有错误的JSON消息?对不起,我的朋友,我正在我的真实设备上测试,因为模拟器在我的笔记本电脑上无法工作。其中一个原因是,您的web主机正在向您的“JSON”文件添加内容,因此它不是有效的JSON。此外,来自服务器的响应头是“text/html;charset=utf-8”,它们应该是json@waelbenhamda您仍然可以从实际设备获得logcat输出。没有它,就很难解决问题。不管延迟或用户体验如何,有效的JSON仍然是无效的JSON。