错误连接被拒绝

时间:2011-02-05 05:31:50

标签: android

我想与我自己的servlet建立一个Http连接。这是我的代码:

try
{
    HttpClient client = new DefaultHttpClient();
    HttpPost httpMethod = new HttpPost("http://localhost:8080/getHeader/HeaderServlet");
    httppost.setHeader("Content-Type", "application/x-www-form-urlencoded"); 
    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String response = client.execute(httppost, responseHandler);
    String result = response.toString();
}

但我无法做到,我收到了错误:

org.apache.http.conn.HttpHostConnectionException:Connection to http://localhost:8080 refused

我会感谢你的帮助

5 个答案:

答案 0 :(得分:118)

使用10.0.2.2代替localhost

如果您从设备中引用localhost而不是使用http://10.0.2.2/而不是http://127.0.0.1/http://localhost/

因为您的Android模拟器在Virtual Machine(QEMU)上运行,而您无法连接到直接在PC上运行的服务器。

所以你的代码片段将是这样的:

HttpPost httpMethod = new HttpPost("http://10.0.2.2:8080/getHeader/HeaderServlet");

请参阅:Emulator Networking了解更多信息。

答案 1 :(得分:20)

我遇到了同样的问题,但我通过输入以下标签说明了

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

允许我连接到互联网。

答案 2 :(得分:5)

更好的是你将PC LAN的IP放在Windows中,在cmd控制台中运行“ipconfig”,假设你的IP是:192.168.1.34, 那么

HttpPost httpMethod = 
   new HttpPost("http://192.168.1.34:8080/getHeader/HeaderServlet");

答案 3 :(得分:3)

localhost将是Android设备本身。我假设这不是你的servlet所在。您需要输入servlet所在的主机名或IP。

(如果它真的在您的设备上(为什么?!),那么您需要确保您拥有INTERNET权限。您可以尝试从内置浏览器连接到它。)

答案 4 :(得分:0)

通过从gradle.properties

删除proxyHost,proxyPort等解决了我的问题