我想与我自己的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
我会感谢你的帮助
答案 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等解决了我的问题