関連データを収集するために、php ベースのサイトに接続してログインする必要があるサードパーティの Java アプリケーション (デスクトップ) を作成しています。アクセス可能な Web サービスや API はなく、すべてのユーザーが独自の安全なログインを持つことになります。このサイトは dojo を使用しており (問題がある場合)、私は Java HttpClient を使用して投稿を送信しています。
HttpPost httppost = new HttpPost("https://thewebsite.net/index/login"); // .php ?
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
//initialize the response string
String nextpage = "";
try {
// Add nvps
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("", ""));
nameValuePairs.add(new BasicNameValuePair("login", "USER"));
nameValuePairs.add(new BasicNameValuePair("", ""));
nameValuePairs.add(new BasicNameValuePair("pass", "PASSWORD"));
nameValuePairs.add(new BasicNameValuePair("Submit", ""));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
userID = EntityUtils.toString(response.getEntity());
System.out.println(nextpage);
httppost.releaseConnection();
}
...
今、私が抱えている問題は、私に与えられた応答がユーザーの検証 jscript であり、道場を介してフィールドを渡すことです。
<script type='text/javascript'>
dojo.require("dojox.validate._base");
function validate_RepeatPassword(val, constraints)
{
var isValid = false;
if(constraints) {
var otherInput = dijit.byId(constraints[0]);
if(otherInput) {
var otherValue = otherInput.value;
isValid = (val == otherValue);
}
}
return isValid;
}
</script>
単に接続し、html 応答を解析して、接続を閉じたいだけです。
firebug を使用すると、これを post メソッドとして取得しますが、実行できないようです: Referer https://thewebsite.net/index/login Source login=USER&pass=PASSWORD
HttpPost クライアントを使用して、名前と値のペアを使用せずに直接投稿 URL を作成すると、次のようになります。
HttpPost httppost = new HttpPost("https://thewebsite.net/index/login?login=USER&pass=PASSWORD");
、「ユーザー フィールドとパス フィールドを空白のままにすることはできません」というエラー応答が表示されます。
私の質問は次のとおりです。過去のログインを正常に続行できるようにする、見逃しているより簡単なログイン方法はありますか?
ありがとう - 私は SO コミュニティが大好きです。あなたが助けてくれることを願っています。