Java - динамически вставлять имя пользователя и пароль в цикле при чтении из файла - PullRequest
0 голосов
/ 27 марта 2012

Я не думаю, что это возможно, поэтому, возможно, мне нужен совершенно новый взгляд на проблему.

Моя 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
    }
}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Просто, чтобы продолжить, мне удалось найти способ исправить это, но это, вероятно, не идеально.

По сути, я делаю так, чтобы у пользователя были имя пользователя и пароль в качествепервая и вторая пустые записи в файле PROPERTIES.

Затем в моем коде есть счетчик, который говорит: if ((counter++)==0), insert username, а затем if ((counter++)==1), insert password, за которым следует else leave it blank.

. Это работаетдля того, что мне нужно сделать, но не может быть идеальным.

PS, я реализовал собственный класс Property, чтобы убедиться, что все они упорядочены, так как метод по умолчанию сохраняет их в неупорядоченном списке.

0 голосов
/ 27 марта 2012

Возможно, вы могли бы использовать элемент id , чтобы определить, какие поля используются для имени пользователя и пароля.

В противном случае может показаться, что вам может потребоваться, чтобы поля имени пользователя и пароля соответствовали некоторому соглашению об именах.

Может быть, они всегда могут начать с __username и __password (или что-то в этом роде).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...