1

ログイン画面を持つ Java アプリケーションを作成しています。理想的には、ユーザーが提供したデータ (名前、パスワード) を取得し、資格情報を確認できる ASP フォームに送信したいと考えています。私は ASP フォームを所有していません。URL にしかアクセスできません。また、ユーザーが資格情報を Web フォームに直接入力することも望ましくありません。彼らは資格情報を私のプログラムに入力し、私のプログラムはデータをフォームに入れて送信し、応答に基づいてユーザーを許可/拒否します。

もちろん、ASP フォームの送信ボタンは POST 要求です。ただし、テキスト ボックスに入力したボタンからフォームを送信する必要があるため、URL (...login?username=name&password=pass) の作成は機能しません。

私は2つのアプローチを試しました:

  1. Java の URLConnection クラスを使用します。フォームの送信は、URL を構築している上記の方法に限定されているため、これは機能していないようです。

  2. Javascript を使用して、ページ上の要素にアクセスして編集します。Javascript が Web ブラウザではない私のプログラムから実行されているため、これも機能しませんでした。したがって、一般的に使用される「ドキュメント」または「ウィンドウ」にアクセスできません。

私が考えることができる他の潜在的な解決策:

  1. ブラウザを開いてログイン ページにフォーカスを与えず、スクリプトを実行してフォームに入力して送信し、応答を解析してからブラウザを閉じます。これには、Java プログラムのログイン ページへの入力を除いて、ユーザーはまったく関与しません。

  2. サードパーティの Java ライブラリを使用する (提案? チュートリアルへの参照?)。

  3. URL をログイン画面に埋め込みます (この点に関して何か助けていただければ幸いです)。

変更できないのは、私のプログラムが Java であることと、ログイン URL が URL から POST データを隠す ASP フォームであることです。

説明が必要な場合はお知らせください。どんな助けでも大歓迎です。

4

3 に答える 3

0

javascriptを使用してIFrameでASPフォームを開き、すべてのフィールドに入力して投稿してみませんか。

これで問題が解決するはずです。

于 2012-04-10T11:49:24.050 に答える
0

htmlunit を試してみてください。これはテスト用に設計されていますが、これには理想的です。Selenium webdriver と組み合わせて使用​​できます

于 2012-04-10T11:27:02.777 に答える
0

Sfk は正しいです。同様の問題があり、フォームに入力してHtmlunitで送信することができました。@sfk ありがとうございます。

だからhtmlunitで

 //for chrome simulation
 WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
 //has getting an error from [http://www.google-analytics.com/ga.js with javascript on.
 webClient.setJavaScriptEnabled(false);

 HtmlPage page = webClient.getPage("http://yourtargetpage/Default.aspx");

//get the form by name, check page source for name
 HtmlForm form = page.getFormByName("aspnetForm");
 HtmlPasswordInput inputPass =  form.getInputByName("your input password text field name");    
 HtmlTextInput userName =  form.getInputByName("your input user text field name");

 HtmlSubmitInput button=form.getInputByName("your target submit button");

 //set username and password
  userName.setText("myuser");
  inputPass.setText("mypassword");
//click the submit button and get the returned page
  HtmlPage page2 = button.click();

それだけです..返信ページを取得し、フィールドに関する情報を送信しました..これで、ページを解析してサイトの応答を取得できます..

于 2012-12-26T02:50:23.870 に答える