【发布时间】:2014-10-08 00:49:22
【问题描述】:
以下是我的代码,它发出 POST 请求以登录网站。当我运行相同时,我收到消息响应为 411。有人可以帮我设置正确的内容长度吗?
try {
String request = "http://<domain.com>/login";
URL url = new URL(request);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestProperty("Content-Length", "1");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("email", "abc");
connection.setRequestProperty("password", "xyz");
connection.setDoOutput(true);
connection.setRequestMethod("POST");
int code = connection.getResponseCode();
System.out.println("Response Code of the object is " +code);
if(code == 200)
System.out.println("OK");
connection.disconnect();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
-
我遇到了同样的问题。这就是我发现的:411 仅从实现 HTTP 1.0 的服务器返回。在 HTTP1.1 中,Content-Length 属性在 POST 请求中不是强制性的。像您一样手动设置 Content-Length 是徒劳的。 Java 会覆盖它。但是,似乎在零长度的 POST 请求中,java 根本没有设置 Content-Length。至少这是我的假设。在我的情况下,实际问题是发送了一个 POST 请求,而 GET 请求就足够了。使用 GET 请求,您无需设置 Content-Length,因为不会向服务器发送任何内容。