Я не думаю, что это возможно, поэтому, возможно, мне нужен совершенно новый взгляд на проблему.
Моя java-программа подключается к веб-форме и входит в систему. У меня есть имя пользователя и пароль из другой части кода.
Форма HTML, очевидно, будет содержать разные типы ввода. В зависимости от пользователя и сайта каждое поле будет называться по-разному. Вот пример веб-формы:
<FORM METHOD=POST ACTION="/my.form">
Username:
<INPUT NAME="username">
<BR>
Password
<INPUT TYPE="PASSWORD" NAME="password">
<INPUT TYPE="HIDDEN" NAME="my-hidden-name" VALUE="someValue">
<BR><INPUT TYPE="SUBMIT" VALUE="Login">
</FORM>
В этой форме поля NAME
могут быть любыми и изменят форму сайта на сайт. Я справился с этим, требуя файл PROPERTIES
, в котором хранятся поля, например:
username
password
my-hidden-name=someValue
SUBMIT=Login
Это работает для половины вышеуказанных полей. Проблема заключается в полях username
и password
.
У меня уже есть имя пользователя и пароль, поэтому я мог бы просто сделать: if(currentField=="password") string=mypass123
. но что тогда, если кто-то создаст форму, в которой поле имени пользователя / пароля будет называться user1
или passwordField
, или, в принципе, что-нибудь, кроме того, что я положил в if()
!!
Итак, кто-нибудь может предложить способ, которым я могу обрабатывать любую комбинацию имен, и все же определить, какие поля являются именем пользователя и паролем? Вот мой текущий код:
//Read file logic here
Properties formProps=getDataFromResource(pathToFormFieldsPropfile);
if(null!=formProps)
{
//Gets a list of all the field names, eg "username", "password", "submit"
Enumeration<?> formFields=formProps.keys();
while(formFields.hasMoreElements())
{
String tempString=(String) formFields.nextElement(); //This gets the field name
query+=tempString //Will contain field name
+"=" //Used as a divider in the querystring, ie field=value
+formProps.get(tempString) //Value corresponding to field
//+ URLEncoder.encode((String) formProps.get(tempString),Charset.defaultCharset().toString()) //The value needs to be encoded for POST
+"&"; //The trailing one of these will have to be removed at the end
}
}
Спасибо!