org.apache.http.conn.HttpHostConnectException:连接到h

2019-07-17 17:25发布

我想提出的是上传图片到服务器,并更新其数据库中的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);

可以在任何一个可以帮助我在这?

Answer 1:

如果你正在使用模拟器来运行本地服务器应用程序。 何况本地ip10.0.2.2 ,并不得不给Internet权限到您的应用程序:

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


Answer 2:

<uses-permission android:name="android.permission.INTERNET"/>添加此标记上方到您的Android项目的AndroidManifest.xml中,这将是好的。



Answer 3:

http://localhost

上述主机已经在其上运行的代码仿真器占用。 如果您要访问您的计算机的本地主机比使用IP地址作为http://10.0.2.2:8080/

有关详细信息,请参阅此链接 。



Answer 4:

我正面临完全一样的问题,我做了以下修改我的网址,之后将其工作完全正常..

从:

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


Answer 5:

尝试加入许可清单的应用程序标记外除了改变localhost来10.0.2.2:8080的上述答案



Answer 6:

对于WAMP服务器使用10.0.2.2本地主机如10.0.2.2/phpMyAdmin

并为Tomcat使用10.0.2.2:8080/server



Answer 7:

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



Answer 8:

当您使用设备测试你要添加你的电脑的IP地址。

在PC运行在cmd中Ipconfig

在Ubuntu运行终端ifconfig

然后,使用"http://your_pc_ip_address:8080/register"使用的insted的"http://10.0.2.2:8080/register"

in my pc = 192.168.1.3

还可以添加网络权限的体现

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


Answer 9:

我使用PHP的Web服务和Android 4.x版 装置,用于连接到web服务。 我有类似的问题,即,使用10.0.2.2用模拟器运作良好,但未能从设备连接。 为我工作的解决方案是:找到IP计算机的......说192.168.0.103找到你的apache的端口...比如说8080现在打开httpd.conf文件,找到下面的行听127.0.0.1:8080此行后添加下面听192.168.0.103:8080完蛋了。 现在,如果你使用192.168.0.103:8080在你的Android代码,它将连接!



Answer 10:

我有类似的问题,然后我发现无线网络并没有在我的智能手机连接。 我打开无线网络后,并连接到类似的网络(我的笔记本电脑),出现了另一个问题 - 笔记本电脑的防火墙挡住传入连接。 有一次,我定了防火墙,我能够从我的Android应用程序与在笔记本电脑上运行的Web服务进行通信。



Answer 11:

其中一个导致这个错误的基础和简单的一件事是: 没有互联网连接

打开你的设备的Internet连接第一。

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



Answer 12:

这个错误有两种解决方案:

1.在你的AndroidManifest.xml中添加你的Android项目的此权限

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

2. 首次打开设备的互联网连接。



Answer 13:

使用127.0.0.1而不是localhost



文章来源: org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused in android