获取';时,应用程序在加载时崩溃;从PHP服务器读取数据

获取';时,应用程序在加载时崩溃;从PHP服务器读取数据,php,android,Php,Android,我想在安卓设备上阅读我在物理服务器上的mysql数据库上加载的某个日期。 数据库和用于提取数据的php脚本都正常。 问题在于android编码方面 公共类MainActivity扩展活动{ 公共HttpResponse响应; 公共字符串str; 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); HttpClient HttpClient=新的DefaultHttpClient(); HttpPos

我想在安卓设备上阅读我在物理服务器上的mysql数据库上加载的某个日期。 数据库和用于提取数据的php脚本都正常。 问题在于android编码方面

公共类MainActivity扩展活动{
公共HttpResponse响应;
公共字符串str;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“/*phpAddressScorect*/”);
试一试{
response=httpclient.execute(httppost);
}
捕获(IOE异常){
e、 printStackTrace();
}
试一试{
str=EntityUtils.toString(response.getEntity());
}捕获(IOE异常){
e、 printStackTrace();
}
Toast.makeText(getBaseContext(),str,Toast.LENGTH_LONG.show();
}
}
main.xml
只是一个
RelativeLayout


在安卓互联网许可下,应用程序在加载时崩溃。我想这是因为IOException,不是吗?

网络总是需要在另一个线程(而不是UiThread)中完成


非常感谢,所以我必须在main中创建一个startinentservice。它是后台线程吗?我发布的线程是在后台执行的。所以只要复制我的答案,然后做你的分析,等等,在我写下三个点的地方。请记住,您不能在另一个线程中更改UI(在此后台线程中创建一个)。还请记住,联网需要一些时间,如果您从onclick侦听器读取变量,那么这些变量可能未初始化。
new Thread() {
    public void run() {
        HttpURLConnection con = (HttpURLConnection) new URL("http://xyz").openConnection();
        String response = StreamToString(con.getInputStream());
        // ...
    }
}.start();
public static String StreamToString(java.io.InputStream is) {
    java.util.Scanner scanner = new java.util.Scanner(is);
    scanner.useDelimiter("\\A");
    String ret = scanner.hasNext() ? scanner.next() : "";
    scanner.close();
    return ret;
}