org.apache.http.conn.HttpHostConnectException:连接到http://localhost 在android中被拒绝
我正在制作一个应用程序,将图像上传到服务器,并在执行时将其数据库更新到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
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并找到下面的行Listen127.0.0.1:8080
在这行之后添加下面的Listen192.168.0.103:8080
就是这样。现在,如果您在android代码中使用192.168.0.103:8080
,它将连接 请检查您是否在同一网络上运行android设备。这将解决问题。玩得开心 我面临着完全相同的问题,我对我的URL做了以下更改,之后它工作得非常好
发件人:
致:
使用要添加PC ip地址的设备进行测试时,请使用
127.0.0.1
而不是localhost
在pc中以cmdIpconfig运行
在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"/>