2

我正在请求以下请求,并且我在 android 应用程序中遇到异常。

URL url = new URL(strURL);
URLConnection urlConnection = url.openConnection();

try {
    HttpURLConnection httpConn = (HttpURLConnection) urlConnection;
    httpConn.setRequestMethod("GET");
    httpConn.connect();

    if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
        is = httpConn.getInputStream();

    }
} catch (Exception ex) {

    System.out.println(ex);
}

得到以下异常

java.net.SocketException: Permission denied
4

3 回答 3

2

首先,将其放入清单中:

<uses-permission android:name="android.permission.INTERNET" />

如果您的应用要在高于 3.0 的 Android 版本上发布,您必须记住您需要在另一个线程中发出 http 请求(选项 1 和 2)。

选项 1(不推荐,但它有效:添加此行:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

但老实说,我不推荐第一个选项,但它确实有效。//================================================= ============================
选项2:

使用本教程制作正确的 ASyncTask:http ://www.elvenware.com/charlie/development/android/SimpleHttpGetThread.html

//================================================= ============================ 使用 ASyncTask 作为最终任务(选项 2)。

他们在 Android 3.0+ 中更改了网络权限

于 2013-01-17T11:18:40.003 回答
2

添加<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>到清单

于 2013-01-17T11:16:50.910 回答
2

将此添加到您的 manifest.xml

<!-- For Getting Network permission -->
<uses-permission android:name="android.permission.INTERNET"/>
于 2013-01-17T11:21:18.367 回答