2012-03-26 9 views
0

これは可能ではないと思われるので、問題を見るためにはまったく新しい方法が必要です。Java - ファイルから読み取るときにユーザー名とパスワードをループで動的に挿入する

私のJavaプログラムはWebフォームに接続してログインします。コードの別の部分にユーザー名とパスワードがあります。 HTMLフォームには明らかに異なる入力タイプが含まれます。ユーザーとサイトによっては、各フィールドの名前が異なる場合があります。ここではサンプルWebフォームです:このフォームで

<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 

これは、上記のフィールドの半分のために働きます。問題はusernamepasswordフィールドです。

私はすでにユーザー名とパスワードを持っていますので、私はちょうど: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 
    } 
} 

ありがとうございます!

答えて

0

これをフォローアップするだけで、私はこれを修正する方法を思いつきましたが、それはおそらく理想的ではありません。

基本的には、ユーザーはPROPERTIESファイルの最初と2番目の空白のエントリとしてユーザー名とパスワードを持っている必要があります。

私のコードでは、if ((counter++)==0), insert usernameと表示され、次にif ((counter++)==1), insert passwordと表示され、その後にelse leave it blankが続くカウンタがあります。

これは私がしなければならないことに対して機能しますが、理想的ではないかもしれません。

PSでは、デフォルトのメソッドが順序付けられていないリストに格納されているので、カスタムのPropertyクラスを実装して、それらがすべて順序付けされていることを確認しました。

0

id要素を使用して、どのフィールドがユーザー名とパスワードに使用されているかを検出することができます。

それ以外の場合は、ユーザー名とパスワードのフィールドにいくつかの命名規則が必要な場合があります。

いつも__usernameと__password(またはそのようなもの)から始めることができます。

+0

申し訳ありませんが、「id要素」は何ですか? – eoinzy

+0

命名規則に関しては、サイトはすでに作成されているので、フィールド名はすでに存在しています。最悪の場合は、ユーザ名にPROPERTIESファイルのユーザ名をアンダースコアまたは前に付けるようにしてから、処理を行い、最後にプリペンドされたものをトリムすることができます。私が選択したどんなパターンでもフィールドが既に始まっているウェブサイトが存在すれば問題はあります。 – eoinzy

関連する問題