我正在我的本地机器上运行tomcat servlet,并且使用向servlet发出发布请求的应用程序运行Android模拟器。 POST的代码如下(没有例外等):通过android模拟器发送HTTP POST请求不起作用
String strUrl = "http://10.0.2.2:8080/DeviceDiscoveryServer/server/devices/";
Device device = Device.getUniqueInstance();
urlParameters += URLEncoder.encode("user", "UTF-8") + "=" + URLEncoder.encode(device.getUser(), "UTF-8");
urlParameters += "&" + URLEncoder.encode("port", "UTF-8") + "=" + URLEncoder.encode(new Integer(Device.PORT).toString(), "UTF-8");
urlParameters += "&" + URLEncoder.encode("address", "UTF-8") + "=" + URLEncoder.encode(device.getAddress().getHostAddress(), "UTF-8");
URL url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
wr.write(urlParameters);
wr.flush();
wr.close();
无论何时执行此代码,都不会调用该servlet。但是,如果我将请求的类型更改为“GET”,并且不向输出流写入任何内容,则会调用该servlet并且一切正常。我只是没有正确地开展POST或有其他一些错误?
你应该将检查你的servlet代码。它应该接受POST请求。 –
这个servlet的工作原理。看到下面,我找到了一个可行的解决方案。我不知道为什么。 –