我想与我自己的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();
}
Run Code Online (Sandbox Code Playgroud)
但我无法,我得到错误:
org.apache.http.conn.HttpHostConnectionException:Connection to http://localhost:8080 refused
Run Code Online (Sandbox Code Playgroud)
我将感谢你的帮助
Vik*_*dar 123
10.0.2.2而不是localhost.如果您指的是localhost设备中的a 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");
Run Code Online (Sandbox Code Playgroud)
请参阅:仿真器网络以获取更多信息.
小智 20
我遇到了同样的问题,但我通过放入以下标签说明了解决了这个问题
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
这让我可以连接到互联网.
小智 7
更好的是你把PC LAN的IP放在Windows中,在cmd控制台中运行"ipconfig",假设你的IP是:192.168.1.34,那么
HttpPost httpMethod =
new HttpPost("http://192.168.1.34:8080/getHeader/HeaderServlet");
Run Code Online (Sandbox Code Playgroud)
localhost将是 Android 设备本身。我认为这不是您的 servlet 所在的位置。您需要输入 servlet 所在位置的主机名或 IP。
(如果它确实在您的设备上(为什么?!),那么您需要确保您具有 INTERNET 权限。您可以尝试从内置浏览器连接到它。)