【问题标题】:org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused in androidorg.apache.http.conn.HttpHostConnectException:与 http://localhost 的连接在 android 中被拒绝
【发布时间】:2012-12-15 11:31:18
【问题描述】:

我正在制作一个应用程序,该应用程序在执行时将图像上传到服务器并将其数据库更新到 android 中的服务器,它显示错误

Connection to http://localhost refused 

还有更多错误,我研究了这个问题,发现没有提供 URL 连接

http://localhost/... provide the link as http://10.0.2.2/... 

我也这样做了,但问题是一样的 更多错误在这里:

E/org.apache.http.conn.HttpHostConnectException(4318): Connection to http://localhost refused
E/org.apache.http.conn.HttpHostConnectException(4318): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
E/org.apache.http.conn.HttpHostConnectException(4318):  at com.example.android.photobyintent.ViewRecipients.uploadFile(ViewRecipients.java:325)
E/org.apache.http.conn.HttpHostConnectException(4318):  at com.example.android.photobyintent.ViewRecipients$1.run(ViewRecipients.java:238)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.lang.Thread.run(Thread.java:856)
E/org.apache.http.conn.HttpHostConnectException(4318): Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.java:114)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
E/org.apache.http.conn.HttpHostConnectException(4318):  at java.net.Socket.connect(Socket.java:842)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
E/org.apache.http.conn.HttpHostConnectException(4318):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
E/org.apache.http.conn.HttpHostConnectException(4318):  ... 8 more
E/org.apache.http.conn.HttpHostConnectException(4318): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.Posix.connect(Native Method)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
E/org.apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.java:112)
E/org.apache.http.conn.HttpHostConnectException(4318):  ... 13 more

文件上传代码为:

public int uploadFile(ArrayList<String> sourceFileUri, String info, String latitude, String longitude, String id) throws IOException {
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add");

            MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("returnformat", new StringBody("json"));
            System.out.println(sourceFileUri.size());
            for(int i=0;i<sourceFileUri.size();i++){
                String sourceFile = sourceFileUri.get(i);
                entity.addPart("uploaded_file"+(i+1), new FileBody(new File(sourceFile)));
            }

            entity.addPart("fld_delivery_id", new StringBody(id));
            entity.addPart("fld_delivery_location", new StringBody(info));
            entity.addPart("fld_latitude", new StringBody(latitude));
            entity.addPart("fld_longitude", new StringBody(longitude));
            httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost, localContext);
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(
                            response.getEntity().getContent(), "UTF-8"));

            String sResponse = reader.readLine();
            return 1;
        } catch (Exception e) {
            if (dialog.isShowing())
                dialog.dismiss();

            Log.e(e.getClass().getName(), e.getMessage(), e);
            return 1;
        }

       }

在调试代码时达到:

httpPost.setEntity(entity);

它在此行之后显示异常,即在此语句上:

HttpResponse response = httpClient.execute(httpPost, localContext);

谁能帮我解决这个问题?

【问题讨论】:

    标签: android apache connection


    【解决方案1】:
    http://localhost
    

    上面的主机已经被运行代码的模拟器占用了。如果您想访问计算机的本地主机,请使用 IP 地址 http://10.0.2.2:8080/

    更多详情请参考link

    【讨论】:

    • 我的链接是这样的:HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add");
    • 抱歉抛出错误E/org.apache.http.conn.HttpHostConnectException(4474): Connection to http://10.0.2.2:8080 refused
    • 而且我有互联网用户权限,甚至文件和数据库也被上传。我需要来自我无法到达的服务器的响应
    【解决方案2】:

    除了上面提到的将localhost更改为10.0.2.2:8080的答案之外,尝试在清单的应用程序标签之外添加权限

    【讨论】:

      【解决方案3】:

      如果您使用模拟器为本地服务器运行您的应用程序。提及本地 ipas 10.0.2.2 并且必须授予 Internet 权限进入您的应用程序:

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

      【讨论】:

      【解决方案4】:

      对于 wamp 服务器,使用 10.0.2.2 作为本地主机 例如10.0.2.2/phpMyAdmin

      对于 tomcat 使用 10.0.2.2:8080/server

      【讨论】:

        【解决方案5】:

        &lt;uses-permission android:name="android.permission.INTERNET"/&gt; 将此标签添加到您的 Android 项目的 AndroidManifest.xml 中 ,会没事的。

        【讨论】:

          【解决方案6】:

          我将 PHP 用于 web 服务和 Android 4.x。用于连接到 Web 服务的设备。我有类似的问题,使用10.0.2.2 在模拟器上运行良好,但无法从设备连接。对我有用的解决方案是:查找您计算机的 IP ... 说 192.168.0.103 查找您的 apache 的端口 ... 说 8080 现在打开 httpd.conf 并找到以下行 Listen 127.0.0.1:8080 在此行之后添加听听192.168.0.103:8080 就是这样。现在如果你在你的安卓代码中使用192.168.0.103:8080,它就会连接上!!

          【讨论】:

            【解决方案7】:

            请检查您是否在同一网络上运行 Android 设备。这将解决问题。玩得开心!!!

            【讨论】:

              【解决方案8】:

              我遇到了完全相同的问题,我对我的 URL 进行了以下更改,之后它工作得非常好..

              发件人:

              http://localhost/Image4android/get_all_images.php
              

              收件人:

              http://192.168.1.2/Image4android/get_all_images.php
              
              where the ip: 192.168.1.2 is IPv4 address. In windows Run > CMD > Ipconfig
              

              【讨论】:

                【解决方案9】:

                使用127.0.0.1 代替localhost

                【讨论】:

                • 如果您考虑到 genymotion 在虚拟机中运行它,而不是嵌入在您的 PC 中,这很有意义。但应该是ip,比如10.0.1.13
                【解决方案10】:

                当您使用设备进行测试时,您希望添加您的 PC ip 地址。

                在 pc 中运行 cmd Ipconfig

                在ubuntu中运行终端ifconfig

                然后使用"http://your_pc_ip_address:8080/register" 代替使用"http://10.0.2.2:8080/register"

                in my pc = 192.168.1.3
                

                并且还将互联网权限添加到 Manifest

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

                【讨论】:

                  【解决方案11】:

                  我遇到了类似的问题,然后我发现我的智能手机中没有连接 wifi。在我打开 wifi 并连接到类似的网络(使用我的笔记本电脑)后,还有另一个问题 - 笔记本电脑的防火墙阻止了传入连接。修复防火墙后,我就可以通过我的 Android 应用与笔记本电脑上运行的 Web 服务进行通信。

                  【讨论】:

                    【解决方案12】:

                    导致此错误的基本而简单的事情之一是: 没有互联网连接

                    首先打开您设备的互联网连接。

                    (可能我们会忘记这样做)

                    【讨论】:

                      【解决方案13】:

                      此错误的两种解决方案:

                      1。 在您的 Android 项目的 androidManifest.xml 中添加此权限

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

                      2。 首先打开您设备的互联网连接。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2018-07-03
                        • 2010-12-21
                        相关资源
                        最近更新 更多