【问题标题】:Connecting localhost via android - Connection to 10.0.2.2 refused通过 android 连接本地主机 - 连接到 10.0.2.2 被拒绝
【发布时间】:2013-11-29 17:16:51
【问题描述】:

我的 PC 上安装了一个 apache 服务器,我在其中托管了一个 PHP 文件。

然后我尝试使用 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" />

错误日志:

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 

【问题讨论】:

  • 你是用模拟器还是真机连接?请给我们看logcat
  • Eclipse 中的 Android 虚拟设备管理器 .... 尚未上传到任何手机/标签
  • logcat 在主帖中更新
  • 如果您仍然遇到问题,请随时尝试:stackoverflow.com/a/67032554/12298875

标签: android eclipse apache


【解决方案1】:

好的,去 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.

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

请给我反馈。

【讨论】:

  • 抱歉太晚了..我不得不出去一段时间......无论如何,关键是,即使在真实设备中它也可以工作,我需要在模拟器中使用它。正如我所说,如果我放置互联网链接,它就可以正常工作。但我需要离线检查我的编码......
  • 您使用的是什么服务器? IIS 还是 XAMPP??1
  • Apache 通过 EasyPHP
  • @Coderji 所有解决方案都不起作用。我正在使用 wampserver,并在模拟器和真实设备上进行测试。
  • 对于新的 Apache 版本,使用 Require all granted 而不是 Allow from all 。详情请阅读Access Control
【解决方案2】:

Mike 在这个问题上帮助了我很多。所以这里我的步骤是避免这个连接被拒绝

1) 添加 if 以测试 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) 通过在本地浏览所需的网址来测试您的连接

使用您的浏览器并尝试在本地访问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 正在侦听服务器名称 localhost 和端口 8080(允许来自 httpd.conf 中的所有内容)。

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

【讨论】:

    【解决方案3】:

    如果您的 SDK 版本小于 9,则为 SDK 版本添加上面的代码,将它们在 Apache 更新 httpd.conf 中的一些更改作为 line deny from all..替换该句子 Allow from all 并重新启动 WAMP 服务器的服务,然后使用 @987654321 @地址或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>
    

    【讨论】:

      【解决方案4】:

      您可以使用您的真实 IP 地址访问您的虚拟服务器。看看我的回答here。希望对你有帮助。

      【讨论】:

        【解决方案5】:

        我通过在 url 中写入来自 cmd -&gt; ipconfig 的 IP 地址来解决此问题:

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

        【讨论】:

          猜你喜欢
          • 2015-02-21
          • 2015-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多