通过android连接本地主机 – 连接到10.0.2.2被拒绝

我有一个安装在我的电脑,我主持一个PHP文件的Apache服务器。

然后我尝试使用eclipse连接到该文件,但总是给我下面的错误

connection to http://10.0.2.2:8080 refused. 

我试着改变下面的地址,但一直都有类似的错误。

 http://10.0.2.2 http://127.0.0.1 http://localhost 

谁能帮帮我吗。

编辑:仅供参考,我可以访问远程服务器(如www.mydomain.com)没有任何问题。

类文件:

 HttpClient httpclient = new DefaultHttpClient(); Log.d("test","t0"); HttpPost httppost = new HttpPost("http://10.0.2.2:8080/mylibman/data.php"); Log.d("test","t1"); HttpResponse response = httpclient.execute(httppost); // error here Log.d("test","t2"); 

Android清单:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.migrationdesk.mylibman" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.INTERNET" /> 

错误LogCat:

 11-16 02:02:20.803: E/log_tag(1427): Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2:8080 refused 11-16 02:02:20.803: E/log_tag(1427): Error converting result java.lang.NullPointerException: lock == null 11-16 02:02:20.803: E/log_tag(1427): Error parsing data org.json.JSONException: End of input at character 0 of 

好的转到Apache httpd.conf(位于Apache文件夹中):并搜索

 Order Deny,Allow Deny from all Allow from 127.0.0.1 

并检查第二行是否为拒绝,如果是,则将其更改为:

 Allow from all 

然后重新启动Appache服务器,并告诉我反馈。

编辑

尝试一下你的真实设备:

转到CMD并在IPv4下输入ipconfig获取IP地址并更改IP将看起来类似于此:

 http://192.168.0.106:8080/mylibman/data.php // similar to this. 

关闭电脑中的防火墙和任何防病毒应用程序

请给我反馈。

迈克在这个问题上帮了我很多。 所以在这里我的步骤,以避免此连接被拒绝

1)添加如果测试Android SDK。 看来在新版本中你必须明确地允许连接在不同的线程中打开:

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); System.out.println("*** My thread is now configured to allow connection"); } 

2)为您的端口添加一个例外:

在你的情况允许端口8080入站连接

3)通过在本地浏览所需的URL来测试您的连接

使用您的浏览器,并尝试本地访问http://10.0.2.2:8080

4)添加你的清单文件的互联网许可:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yourapp" android:versionCode="1" android:versionName="1.1" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.INTERNET"/> 

我正在使用Wamp,它的apache正在监听servername localhost和端口8080(允许所有在httpd.conf中)。

我的本地IP地址与192.168.0.XXX/folder/my-page-here类似

您可以使用您的真实IP地址到达您的虚拟服务器。 看看我的答案在这里 。 我希望它有帮助。

如果你的SDK版本小于9然后添加上面的代码为SDK版本他们在Apache更新httpd.conf中的一些变化行拒绝从所有..更换该语句允许所有和重新启动WAMP服务器的服务,然后使用10.0.2.2地址或10.0.2.2:8080端口号在Android AndroidManifest文件中包含权限行

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

我通过在URL中写入我的IP地址来修复这个问题cmd -> ipconfig

  HttpPost httppost = new HttpPost( "http://192.168.xx/mylibman/data.php" );