我的测试中有以下代码:
WebResponse response = webConversation.getResponse(loginUrl);
System.err.println("Session ID:" + webConversation.getCookieValue("JSESSIONID"));
WebForm form = response.getFormWithID(loginFormId);
for(String parmName: form.getParameterNames()){
if(loginDayName.equals(parmName)){
form.setParameter(parmName, day);
}
else if(loginMonthName.equals(parmName)){
form.setParameter(parmName, month);
}
else if(loginYearName.equals(parmName)){
form.setParameter(parmName, year);
}
else if(loginPersonIdName.equals(parmName)){
form.setParameter(parmName, person.getPersonId());
}
}
response = form.submit();
System.err.println(response.getText());
所以第一次调用登录 URL 应该返回表单。然后我更改参数并将表单提交回它来自的同一个 servlet。
控制器中的调试表明我使用两个会话 ID 两次获取表单数据。第二个是与我的 webConversation 匹配的会话 ID,并且总是失败,因为第一个实际上是那个人登录的。
这是我目前测试中唯一的 form.submit() 。
我很迷惑。我用错了工具吗?或者这是一个错误?