解析REST API,验证用户会话

时间:2015-09-23 14:55:51

标签: java rest session token

我正在使用Parse REST API进行游戏,尽管有Parse的Java库我想使用java.net来处理传输协议以用于学习目的。请远离类似的事情,为什么我不使用Apache HttpClient。

遵循Parse REST API指南

这是我想要实现的目标:

前两个步骤运行得很好,前者使用POST请求方法,后者使用GET和一些参数。

记住Request and Response格式我还提供 Application-ID REST-API-Key ,它们是所需的适当请求标头。< / p>

现在,对于使用没有参数的GET请求的第三步,但是有一个额外的标头,API期望提供 Session-Token

代码

private static void validateSessionToken(String token) throws IOException {
    System.out.println("Token: " + token);

    URL url = new URL("https://api.parse.com/1/users/me");
    HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
    con.setRequestMethod("GET");
    con.setRequestProperty("X-Parse-Application-Id", "xxxxxxx");
    con.setRequestProperty("X-Parse-REST-API-Key", "xxxxxxxx");
    con.setRequestProperty("X-Parse-Session-Token", token);
    con.setRequestProperty("content-type", "application/json");

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'GET' request to URL : " + url);
    System.out.println("Response Code : " + responseCode);

    if(responseCode == 400) {
        System.out.println("Bad request!");
        return;
    }

    BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    System.out.println(response.toString());
}

输出

Sending 'GET' request to URL : https://api.parse.com/1/users/me
Response Code : 400
Bad request!

调试

我一直在使用PARSE API CONSOLE和Chrome网络调试工具来尝试查看区别,但看不到任何差异。

来自wiki:

  

400错误请求

  由于被认为是客户端错误的内容(例如,格式错误的请求语法,无效的请求消息框架或欺骗性请求路由),服务器无法或不会处理请求

一些可能有用的照片

Console

Header

1 个答案:

答案 0 :(得分:0)

所以当我向JsonObject询问会话令牌时:

jsonObject.get("sessionToken").toString();

它返回:&#34; r:WzB7qdmhkcW5qd2moM8gbBLDp&#34; 引用,但使用:

jsonObject.get("sessionToken").getAsString();

它返回: r:WzB7qdmhkcW5qd2moM8gbBLDp

我非常专注于我甚至没注意到的请求......