我使用Apache的HttpClient类将数据发布到网站表单。使用以下代码行检索表单:
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
我正在检索表单的网站需要身份验证才能访问表单。如果请求未经过身份验证,则网站会将请求重定向到登录表单页面,该页面随后会在成功身份验证时重定向回原始页面。
我想干净地检测GET请求是否返回登录页面或所需的表单页面,以便我可以POST登录数据或表单数据。我能想到的唯一方法是从响应实体的内容InputStream中读取并解析每一行。但这似乎有点令人费解。我以前没有使用过Apache HttpComponents api所以我不确定这是否是实现我想要完成的唯一和最好的方法。
编辑:为了澄清问题,我问是否有一套方法来处理Apache的HttpClient表单。我有点知道如何实现我想做的事情,但它看起来非常难看,我希望有一种更简单,更快捷的方法来实现它。例如,如果有某种方法可以执行以下操作:
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
if(parseElements(response.getEntity()).hasFormWithId("login")) {
// post authentication data
} else {
// post actual form data
}
由于我对Apache的HttpClient api缺乏经验,我不确定我在API中寻找的内容对于API的意图是否过于抽象。
答案 0 :(得分:0)
您可以通过设置HttpClient参数
来修改HttpClient的行为DefaultHttpClient client = new DefaultHttpClient();
client.setDefaultHttpParams(client.getParams().setBoolean(ClientPNames.HANDLE_REDIRECTS, false));
禁用自动处理重定向。
另见: