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

我正在做一个应用程序,上传图像到服务器,并更新其数据库在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 

file upload的代码是:

 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; } } 

同时debugging代码达到:

 httpPost.setEntity(entity); 

并在此行后显示exception,即在此声明中:

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

任何人都可以帮助我吗?

如果您正在使用模拟器来运行本地服务器的应用程序。 提及本地ip10.0.2.2并且必须将互联网权限授予您的应用程序:

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

<uses-permission android:name="android.permission.INTERNET"/>将上面的代码添加到Android项目的AndroidManifest.xml文件中,就可以了。

 http://localhost 

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

有关更多详情,请参阅此链接 。

我面对完全相同的问题,我做了以下更改,我的网址后,它工作得很好..

从:

 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 

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

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

而对于tomcat使用10.0.2.2:8080/server

当你用设备测试你想添加你的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 

并且将互联网许可添加到清单

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

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

我正在使用PHP的Web服务和Android 4.x. 设备连接到web服务。 我有类似的问题,使用10.0.2.2与模拟器很好,但无法从设备连接。 解决方案,我的工作是:查找您的计算机的IP地址…说192.168.0.103找到您的Apache的端口…说8080现在打开httpd.conf并找到以下行listn 127.0.0.1:8080在此行添加听完192.168.0.103:8080这样。 现在,如果你在你的android代码中使用192.168.0.103:8080 ,它将连接!

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

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

首先打开设备的Internet连接。

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

这个错误的两个解决方案:

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

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

2.首先打开设备的Internet连接。

使用127.0.0.1而不是localhost