我正在使用Parse REST API进行游戏,尽管有Parse的Java库我想使用java.net来处理传输协议以用于学习目的。请远离类似的事情,为什么我不使用Apache HttpClient。
这是我想要实现的目标:
前两个步骤运行得很好,前者使用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错误请求
由于被认为是客户端错误的内容(例如,格式错误的请求语法,无效的请求消息框架或欺骗性请求路由),服务器无法或不会处理请求
一些可能有用的照片
答案 0 :(得分:0)
所以当我向JsonObject询问会话令牌时:
jsonObject.get("sessionToken").toString();
它返回:&#34; r:WzB7qdmhkcW5qd2moM8gbBLDp&#34; 引用,但使用:
jsonObject.get("sessionToken").getAsString();
它返回: r:WzB7qdmhkcW5qd2moM8gbBLDp
我非常专注于我甚至没注意到的请求......