我想控制一个设备,其功能只能通过Web界面访问。所以我想为设备的功能构建一种包装器。
Web界面要求您先登录,然后在界面中有一些按钮。
所以我尝试使用登录参数向服务器发送(使用Java)HTTP POST请求。网络服务器 返回200 OK,但问题是,返回的HTML文档声明它“登录失败”。
奇怪的是,当我使用我的webbrowser并尝试使用web界面的登录表单登录时,登录成功。
我使用了Live HTTP Headers Firefox插件,以及我的浏览器发送的一些标题,我复制了一个应用在我的Java代码片段中。至少Accept
,Content-Length
和Content-Type
标题以及类似的内容。
我正在使用以下代码:
String query = "somekey=somevalue&anotherkey=anothervalue";
URL url = new URL("http://" + this.address + "/somesubdir");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.addRequestProperty("Connection", "keep-alive");
conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.addRequestProperty("Content-Length", "" + query.length());
conn.getOutputStream().write(query.getBytes("UTF-8"));
问题的原因是什么?它与会话有什么关系吗?