0

这是我的课程,我尝试使用 JSON 从 MYSQL 获取一些数据到 JSONArray 中。

它在屏幕上出现了两个 Toast:NullPointerEception 和另一个 Exception,它在 php 网页中逐字写入我拥有的所有内容。

public class ConnectMySql extends Activity{
InputStream is;
//List<String> items;
JSONArray jArray;
//String[] items;
StringBuilder sb;
//ListView list;
TextView textv;
    String result;
//List<NameValuePair> items;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
//list = (ListView) findViewById(R.id.listview);

textv = (TextView) findViewById(R.id.tvHI);
setContentView(R.layout.main);

try{
    HttpClient httpsClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("http://79.114.48.119/data.php");

    List<NameValuePair> nameValue = new ArrayList<NameValuePair>();
    httpPost.setEntity(new UrlEncodedFormEntity(nameValue));
    HttpResponse httpResponse = httpsClient.execute(httpPost);
    HttpEntity httpEntity = httpResponse.getEntity();
    is = httpEntity.getContent();
}catch(Exception e){
    Log.e("log_tag", "Error in HTTP connection" + e.toString());
    Toast.makeText(this, "http connection error: " + e.toString(), Toast.LENGTH_LONG).show();
}
    try{
        BufferedReader BufR = new BufferedReader (new InputStreamReader(is, "iso-8859-1"),8);
        sb = new StringBuilder();
        sb.append(BufR.readLine() + "\n");
        String line = "0";

        while((line = BufR.readLine()) != null){
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
    }catch(Exception e){
        Log.e("log_tag", "Error in convert String" + e.toString());
    }
    int lat;
    int lon;
    try{
        jArray = new JSONArray(result);
        Toast.makeText(this, "no data found" + result, Toast.LENGTH_LONG).show();
        JSONObject json_data = null;
        for(int i = 0; i< jArray.length(); i++){
            json_data = jArray.getJSONObject(i);
            lat  = json_data.getInt("latitude");
            lon = json_data.getInt("longitude");

            textv.setText(lat + lon);

            //Here i use another function whitch uses lat & lon
        }
        //setupList();
    }catch(JSONException e){
        Toast.makeText(this, "no data found", Toast.LENGTH_LONG).show();
    }catch(Exception e){
        Toast.makeText(this, "error" + e.toString(), Toast.LENGTH_LONG).show();
    }
}
}
/*private void setupList() {

// TODO Auto-generated method stub
list.setAdapter(new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, items));
}

}*/

你可以帮帮我吗 ?非常感谢你 !

4

1 回答 1

1

您的代码中有几个错误:

1) 必须在 findViewById() 或任何其他使用 xml 布局引用的方法之前调用 setContentView()。

2)您正在尝试在 UI 线程上执行网络操作(http 请求必须从另一个线程执行 - 否则 - 它会引发异常)

如果您忘记或不知道您需要,请不要忘记添加到清单 Internet 权限

于 2012-05-11T16:19:39.140 回答