【问题标题】:Android, read content from URL in 3.1?Android,从 3.1 中的 URL 读取内容?
【发布时间】:2012-02-25 14:18:13
【问题描述】:

我有这个功能在 2.3 中可以正常工作,但在 3.1 中失败了

有什么想法吗?

public static String readUrl( String url2 ){
    String str = "";
    try {
        // Create a URL for the desired page
        URL url = new URL( url2 );

        // Read all the text returned by the server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        str = in.readLine();
        in.close();
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }
    return str;
}

02-02 21:58:09.100:E/AndroidRuntime(30937):致命异常:主要 02-02 21:58:09.100: E/AndroidRuntime(30937): android.os.NetworkOnMainThreadException 02-02 21:58:09.100: E/AndroidRuntime(30937): 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 02-02 21:58:09.100: E/AndroidRuntime(30937): 在 java.net.InetAddress.lookupHostByName(InetAddress.java:477) 02-02 21:58:09.100: E/AndroidRuntime(30937): 在 java.net.InetAddress.getAllByNameImpl(InetAddress.java:277) 02-02 21:58:09.100: E/AndroidRuntime(30937): 在 java.net.InetAddress.getAllByName(InetAddress.java:249) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:69) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:48) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 02-02 21:58:09.100: E/AndroidRuntime(30937): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038) 02-02 21:58:09.100: E/AndroidRuntime(30937): 在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523) 02-02 21:58:09.100: E/AndroidRuntime(30937): at java.net.URL.openStream(URL.java:645)

【问题讨论】:

    标签: android url


    【解决方案1】:

    由于 Honeycomb,您必须异步执行网络操作(不在 UI 线程上)。例如,您可以使用AsyncTask。更多关于异步操作的信息可以在这里找到:http://developer.android.com/resources/articles/painless-threading.html

    如果您以异步方式执行网络操作,您的接口将是 more responsive,并且您不会冒险导致 ANR 对话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 2017-08-03
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多