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

时间:2015-01-31 20:59:36

标签: php android

我想在Android设备上阅读一些日期我已加载到物理服务器上的mysql数据库。 提取数据的数据库和php脚本都可以。 问题是android编码方面。

public class MainActivity extends Activity {
    public HttpResponse response;
    public String str;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("/*phpAddressIsCorrect*/");

        try {
            response = httpclient.execute(httppost);
        }
        catch(IOException e) {
            e.printStackTrace();
        }

        try {
            str = EntityUtils.toString(response.getEntity());
        } catch(IOException e){
            e.printStackTrace();
        }

        Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
    }
}

main.xml只是RelativeLayout

借助互联网的Android许可,应用程序在加载时崩溃。我认为这是因为IOException,不是吗?

1 个答案:

答案 0 :(得分:1)

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

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;
}