Android: Java AsyncTask 中的网络套接字异常

Android: Java Net Socket Exception inside AsyncTask

我 运行 我的 android 应用程序出现以下异常: 我正在进入异步任务但记录了这个异常。

03-15 16:49:21.456  16854-16892/com.ashwinbhy.phpwrite W/Ashwin﹕ java.net.SocketException: socket failed: EACCES (Permission denied)

我已将此权限包含在我的 manifest.xml 中:

<uses-permission android:name="android.permission.internet"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.access_network_state"/>

密码是:

 try {

                URL url = new URL("http://10.0.0.2/tt.php");
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);

                Uri.Builder builder = new Uri.Builder()
                        .appendQueryParameter("bus_id", busid)
                        .appendQueryParameter("lat", lat)
                        .appendQueryParameter("lon", lon);

                String query = builder.build().getEncodedQuery();

                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(query);
                writer.flush();
                writer.close();
                os.close();

                conn.connect();
            }
            catch(Exception e){
                Log.w("Ashwin",e.toString()+"inside the exception log");
                return "error";
            }

有人可以指出我哪里错了吗?

我正在添加日志:

03-15 17:15:42.140    9003-9034/com.ashwinbhy.phpwrite I/System.out﹕ open:http://10.0.0.2/tt.php
03-15 17:15:42.141    9003-9034/com.ashwinbhy.phpwrite D/libc-netbsd﹕ [getaddrinfo]: hostname=10.0.0.2; servname=(null); cache_mode=(null), netid=0; mark=0
03-15 17:15:42.141    9003-9034/com.ashwinbhy.phpwrite D/libc-netbsd﹕ [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
03-15 17:15:42.142    9003-9034/com.ashwinbhy.phpwrite I/System.out﹕ [CDS][DNS] getAllByNameImpl netId = 0
03-15 17:15:42.142    9003-9034/com.ashwinbhy.phpwrite D/libc-netbsd﹕ [getaddrinfo]: hostname=10.0.0.2; servname=(null); cache_mode=(null), netid=0; mark=0
03-15 17:15:42.142    9003-9034/com.ashwinbhy.phpwrite D/libc-netbsd﹕ [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
03-15 17:15:42.143    9003-9034/com.ashwinbhy.phpwrite I/System.out﹕ [CDS]rx timeout:10000
03-15 17:15:42.143    9003-9034/com.ashwinbhy.phpwrite I/System.out﹕ [socket][3] connection /10.0.0.2:80;LocalPort=55951(15000)
03-15 17:15:42.143    9003-9034/com.ashwinbhy.phpwrite I/System.out﹕ [CDS]connect[/10.0.0.2:80] tm:15

尝试为权限设置适当的大小写。它们区分大小写。

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

更新

你的IP也不对。应该是,10.0.2.2。所以你的URL会变成,

http://10.0.2.2/tt.php

在模拟器上应该可以正常运行。