org.apache.http.conn.HttpHostConnectException:连接到http://localhost 在android中被拒绝

org.apache.http.conn.HttpHostConnectException:连接到http://localhost 在android中被拒绝,android,apache,connection,Android,Apache,Connection,我正在制作一个应用程序,将图像上传到服务器,并在执行时将其数据库更新到android中的服务器,它显示了一个错误 Connection to http://localhost refused 还有更多的错误,我研究了这个问题,发现没有提供URL连接 http://localhost/... provide the link as http://10.0.2.2/... 我这样做了,但问题是一样的 更多错误如下: E/org.apache.http.conn.HttpHostConnect

我正在制作一个应用程序,将图像上传到服务器,并在执行时将其数据库更新到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;
        }

       }
在这一行后面显示异常,即在这条语句中:

HttpResponse response = httpClient.execute(httpPost, localContext);
有人能帮我吗

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


有关更多详细信息,请参阅。

如果您正在使用emulator为本地服务器运行应用程序,请尝试在清单的应用程序标记之外添加权限,以及上述将localhost更改为10.0.2.2:8080的答案。将本地
ip
称为
10.0.2.2
,并且必须向您的应用程序授予互联网权限:

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

对于wamp服务器,对于本地主机使用
10.0.2.2
e、 g.
10.0.2.2/phpMyAdmin

对于tomcat使用
10.0.2.2:8080/server

将上述标记添加到Android项目的AndroidManifest.xml中
,这样就可以了。

我正在使用PHP进行webservice和Android 4.x。用于连接到Web服务的设备。我遇到了类似的问题,使用
10.0.2.2
在emulator上运行良好,但无法从设备连接。对我有效的解决方案是:找到你电脑的IP。。。说
192.168.0.103
找到apache的端口。。。说
8080
现在打开httpd.conf并找到下面的行Listen
127.0.0.1:8080
在这行之后添加下面的Listen
192.168.0.103:8080
就是这样。现在,如果您在android代码中使用
192.168.0.103:8080
,它将连接

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

我面临着完全相同的问题,我对我的URL做了以下更改,之后它工作得非常好

发件人:

致:


使用要添加PC ip地址的设备进行测试时,请使用
127.0.0.1
而不是
localhost

在pc中以cmd
Ipconfig运行

在ubuntu中运行终端
ifconfig

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

并将internet权限添加到清单中

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


我也有类似的问题,然后我发现我的智能手机没有连接wifi。在我打开wifi并连接到类似的网络(使用笔记本电脑)后,出现了另一个问题——笔记本电脑的防火墙阻止了传入连接。一旦我修复了防火墙,我就能够从android应用程序与笔记本电脑上运行的web服务进行通信。

导致此错误的一个基本且简单的原因是: 没有互联网连接

首先打开设备的Internet连接。


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

此错误的两种解决方案:

一,。 在Android项目的androidManifest.xml中添加此权限

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

二,。
首先打开设备的Internet连接。

我有这样的链接:
HttpPost-HttpPost=new-HttpPost(“http://10.0.2.2/deliverysystem/order/add)
;抱歉,它抛出错误
E/org.apache.http.conn.HttpHostConnectException(4474):连接到http://10.0.2.2:8080 被拒绝
,而且我拥有互联网的用户权限,甚至文件和数据库都已上载。我需要从我无法访问的服务器获得响应。权限很容易忘记。这对我很有效,谢谢。我完全忘记了那个权限。如果你考虑到genymotion在虚拟机中运行它,而不是嵌入到你的电脑中,那么它是有意义的。但是应该是ip,比如
10.0.1.13
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
in my pc = 192.168.1.3
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>