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!
Sorry, aber was ist das "ID-Element"? – eoinzy
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