2012-03-26 7 views
0

Ich glaube nicht, dass dies möglich ist, also brauche ich vielleicht eine völlig neue Sichtweise auf das Problem.Java - Dynamisch den Benutzernamen und das Passwort in die Schleife einfügen, wenn man von der Datei liest

Mein Java-Programm verbindet sich mit einem Webformular und meldet sich an. Ich habe den Benutzernamen und das Passwort als weiteren Teil des Codes. Das HTML-Formular wird offensichtlich verschiedene Eingabearten enthalten. Abhängig vom Benutzer und der Site wird jedes Feld anders benannt. Hier ist ein Beispiel Web-Formular:

<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> 

In dieser Form ist die NAME Felder können alles sein und Form Ort zu Ort ändern. Ich habe durch die Forderung, eine PROPERTIES Datei um diese bekommt, die die Felder speichert, zum Beispiel:

username 
password 
my-hidden-name=someValue 
SUBMIT=Login 

Diese für die Hälfte der oben genannten Bereiche arbeitet. Das Problem liegt in den Feldern username und password.

Ich habe bereits den Benutzernamen und das Passwort, so konnte ich nur tun: if(currentField=="password") string=mypass123. Aber was ist, wenn jemand ein Formular erstellt, in dem das Feld Benutzername/Passwort user1 oder passwordField heißt, oder im Grunde alles andere als das, was ich in die if() geschrieben habe !!

Kann also jemand vorschlagen, wie ich mit einer beliebigen Kombination von Namen umgehen kann und welche Felder Benutzername und Passwort enthalten? Hier ist mein aktueller Code:

//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 
    } 
} 

Vielen Dank!

Antwort

0

Um dies zu verfolgen, habe ich mir einen Weg ausgedacht, um das zu beheben, aber es ist wahrscheinlich nicht ideal.

Grundsätzlich mache ich es so, dass der Benutzer den Benutzernamen und das Passwort als erste und zweite leere Einträge in der Datei EIGENSCHAFTEN haben muss.

Dann in meinem Code habe ich einen Zähler, der sagt, if ((counter++)==0), insert username und dann if ((counter++)==1), insert password, gefolgt von else leave it blank.

Dies funktioniert für das, was ich tun muss, aber möglicherweise nicht ideal.

PS, ich habe eine benutzerdefinierte Eigenschaft Klasse implementiert, um sicherzustellen, dass sie alle geordnet sind, da die Standardmethode sie in einer ungeordneten Liste speichert.

0

Vielleicht könnten Sie das ID Element verwenden, um zu erkennen, welche Felder für Benutzername und Kennwort verwendet werden.

Andernfalls klingt es so, als müssten Sie möglicherweise verlangen, dass die Felder Benutzername und Passwort einer Namenskonvention folgen.

Vielleicht könnten sie immer mit __username und __password (oder so ähnlich) beginnen.

+0

Sorry, aber was ist das "ID-Element"? – eoinzy

+0

In Bezug auf die Namenskonvention werden die Sites bereits erstellt, daher sind die Feldnamen bereits vorhanden. Im schlimmsten Fall kann ich sie zwingen, den Benutzernamen in die Datei PROPERTIES mit einem Unterstrich oder etwas Vorgegebenem einzutragen, dann die Verarbeitung durchzuführen und schließlich das vorgestellte Material zuzuschneiden. Das Problem ist, wenn es eine Website gibt, deren Felder bereits mit dem von mir gewählten Muster beginnen. – eoinzy

Verwandte Themen