簡體   English   中英

來自Android的AWS Identity TVM注冊

[英]AWS Identity TVM registration from android

在Identity TVM注冊中,可以直接通過我的應用程序獲取用戶的用戶名和密碼(因為用戶必須注冊才能使用我的應用程序),而不是將用戶重定向到Identity TVM register.jsp進行注冊,而是發送給Identity TVM注冊以獲取注冊。 如果是,該怎么辦?

我有同樣的問題。 我想到的答案是從您的應用程序內發送HTTP Post請求,該請求復制注冊表單上發生的事情。

您將需要創建一個捕獲用戶名和密碼的新布局(我復制了文件login_menu.xml,將其重命名為register_menu.xml並更改了一些小部件ID)

在原始的Login.java文件中,我將“注冊”按鈕的onclick動作更改為重定向到我稱為Register.java的新活動。

在Register.java中,我使用register_menu.xml作為布局文件,當人們單擊register按鈕時,將運行以下代碼(它從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;

我從其他StackOverflow帖子中獲得了一些代碼,這些代碼與如何使用Java生成HTTP帖子( Java-通過POST方法輕松發送HTTP參數 )以及從Android Dev站點中獲取了一些有關網絡連接最佳做法的代碼( http://developer.android .com / training / basics / network-ops / connecting.html

這應該可以幫助您開始自己的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM