Identity TVM 登録では、ユーザーをIdentity TVM register.jspにリダイレクトして登録する代わりに、アプリケーションを介してユーザーのユーザー名とパスワードを直接取得できます (ユーザーはアプリケーションを使用するには登録する必要があるため)、それらを Identity TVM 登録に送信して取得できます登録済み。はいの場合、それを行う方法は?
1 に答える
私も同じ問題を抱えていました。私が思いついた答えは、アプリ内から HTTP Post リクエストを送信して、登録フォームで何が起こるかを再現することです。
ユーザー名とパスワードを取得する新しいレイアウトを作成する必要があります (login_menu.xml ファイルをコピーし、名前を register_menu.xml に変更し、ウィジェット ID の一部を変更しました)。
元の Login.java ファイルで、[登録] ボタンの onclick アクションを変更して、Register.java という名前の新しいアクティビティにリダイレクトしました。
Register.java では、register_menu.xml をレイアウト ファイルとして使用し、ユーザーが登録ボタンをクリックすると、次のコードが実行されます (AsyncTask 内から実行されます)。
String registration_url = (PropertyLoader.getInstance().useSSL() ? "https://" : "http://") + PropertyLoader.getInstance().getTokenVendingMachineURL() + "/registeruser";
URL url = new URL(registration_url);
Map<String,Object> params = new LinkedHashMap<String,Object>();
params.put("username", username);
params.put("password", password);
StringBuilder postData = new StringBuilder();
for (Map.Entry<String,Object> param : params.entrySet()) {
if (postData.length() != 0) postData.append('&');
postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
postData.append('=');
postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
conn.setUseCaches (false);
conn.getOutputStream().write(postDataBytes);
conn.getOutputStream().flush();
response = conn.getResponseCode();
Log.d(DEBUG_TAG, "The response is: " + response);
return response;
Java を使用して HTTP ポストを生成する方法に関する他の StackOverflow の投稿 ( Java - POST メソッドを介して簡単に HTTP パラメーターを送信する) と、ネットワーク接続のベスト プラクティスに関する Android 開発サイト ( http://developer.android .com/training/basics/network-ops/connecting.html )
これは、独自の実装を開始するのに役立ちます。