2012-04-10 8 views
1

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

もちろん、ASPフォームの送信ボタンはPOSTリクエストです。 。

:しかし、フォームを充填テキストボックスとボタンを経由して提出しなければならないとして、動作しない(?...ログインユーザー名=名&パスワード=パス)URLを構築

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

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

  2. ページ上の要素にアクセスして編集するためにJavaScriptを使用します。 Javascriptがウェブブラウザではない私のプログラムから実行されているので、これは一般的に使用される '文書'または 'ウィンドウ'へのアクセス権がないため、これはどちらもうまくいきません。私は考えることができる

その他の潜在的な解決策:

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

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

  3. ログイン画面にURLを埋め込む(この点に関する助けとなります)。

私のプログラムはJavaであり、ログインURLはPOSTデータをURLから隠すASPフォームです。

明確化が必要な場合は教えてください。どんな助けも歓迎です。

+0

'... login?username = name&password = pass' - パスワードはその通話を傍受しているか誰かが見ることができるので、決して行うべきではありません。ウェブサーバーのログファイルへのアクセス。 – Thomas

+0

@トーマスええ、私は同意する、私はちょうど何がうまくいくのか見てみようとしていた。 Webフォームが安全であるため、フォームを記入して私のプログラムから直接提出することができれば、はるかに良いでしょう。 – user1323854

+0

AFAIKあなたは 'URLConnection'を使ってPOSTリクエストを提出することができます。URLの代わりにリクエスト本体にパラメータを置くだけです(接続用のライターを作成し、それにパラメータを書き込む)。 – Thomas

答えて

0

try htmlunit、テスト用に設計されていますが、これは理想的です。

0

JavaScriptを使用してIFrameにASPフォームを開いて、すべてのフィールドに値を入力すると、&が投稿されるのはなぜですか?

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

+0

ありがとうございます - ここで私が直面している問題は、私のJSは私のプログラムを通して実行され、Webブラウザに関連付けられていないということです。つまり、document.createElement( "iframe")を呼び出すと、または何か似て、私はエラーが発生します:ReferenceError: "ドキュメント"が定義されていません。 – user1323854

+0

ページのクライアント側に追加できませんか? – Ravia

+0

私はこのページを所有しておらず、コードを追加することはできません。私の学校の安全なログインです。プログラムの一般的なユーザーは学校の従業員で、学校のログイン情報を使用する資格があります。別の資格情報を扱う代わりに、すでに持っているものを使うようにしたいのです。自分のJSがページに埋め込まれているコード自体を使わずにそのページのコンテンツにアクセスできるようにしたい。それが可能なのかどうかはわかりません。 – user1323854

0

Sfkは正しいですが、私も同様の問題があり、フォームに記入してHtmlunitと提出してください。@ sfk多くのありがとうございました。

は、だからThat's 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(); 

で..あなたは、返信ページを持って、フィールドに情報を送りました。..

関連する問題