Android 4.0上的HttpURLConnection失败

时间:2011-12-05 20:27:31

标签: android httpurlconnection

我正在使用此代码从网上获取更改日志。

InputStream content = null;
           try {


               URL url = new URL("http://dreamhawk.blinkenshell.org/changelog.txt");
               HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
               urlConnection.setRequestMethod("GET");
               urlConnection.connect();

               content = urlConnection.getInputStream();


               BufferedReader r = new BufferedReader(new InputStreamReader(content));
               StringBuilder total = new StringBuilder();
               String line;
               String NL = System.getProperty("line.separator");
               try {
                   while ((line = r.readLine()) != null) {
                       total.append(line + NL);
                   }
               } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }

               String page = total.toString();

               Dialog dialog = new Dialog(Main.this);

               dialog.setContentView(R.layout.custom_dialog);
               dialog.setTitle(R.string.changelog);
               dialog.setCanceledOnTouchOutside(true);

               TextView text = (TextView) dialog.findViewById(R.id.text);
               text.setTextSize(13);
               text.setText(page);
               dialog.show();
           } catch (Exception e) {
               //handle the exception !
           }

这适用于Android 2.3及以下......但自从ICS更新后,我什么都没得到! 没有对话,没有回应,没有任何东西!救命! :/

2 个答案:

答案 0 :(得分:15)

我知道在android 3.0中,主线程上的网络连接是不允许的。

StrictMode自动开启。 我确定它与4.0相同。

要解决此问题,您必须在单独的线程上执行网络连接...例如,使用AsyncTask


阅读关于此主题的博客文章:

Why Ice Cream Sandwich Crashes Your App

答案 1 :(得分:0)

那么,你为什么不使用WebClient? (用法:https://gist.github.com/2906703),你真的不需要搞乱StrictMode线程策略。如果谷歌认为改变它很重要,我是谁不同意。