使用身份验证Android获取HTTP请求

时间:2017-03-03 18:24:32

标签: java android rest stormpath

我正在尝试从我的Android客户端连接到我的stormpath身份验证服务器的REST api。 Stormpath有一个java库但是我无法获取自定义数据,因此我发现实际获得这些数据的唯一方法就是调用REST API。

在他们的website

他们谈论认证并给出一个简单的linux命令:

curl --request GET \
--user $SP_API_KEY_ID:$SP_API_KEY_SECRET \
--header 'content-type: application/json' \
--url "https://api.stormpath.com/v1/tenants/current"

我怎么能把它翻译成android?我试过这样但没有任何成功:

try {
            URL url = new URL((String) params[1]);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                Log.d("DEBUG", "" + output);
            }

            conn.disconnect();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:1)

完全披露:我在@ Stormpath工作(虽然不直接在我们的Android上工作)。

我们支持两种不同的用例,我们可以更好地记录文档:

  • 与Stormpath REST API的可信通信。这需要Stormpath API密钥ID和密码,并且可以从移动或Web客户端完成。
  • Stormpath Client API或我们的某个服务器中间件包进行不受信任的通信。

对于Android客户端,您不希望使用受信任的API凭据进行调用,因为有人可能会通过反编译您的应用来窃取它们。相反,您应该在后端服务器上创建一个路由,以对Stormpath API进行可信调用,并将该数据转发到您的应用程序。