我一直试图让Kin ap handshake让REST api工作一段时间,但没有任何运气。我正在使用libgdx's net class发送http请求。我每次发送请求都会得到504(网关超时)错误。我按照网站上的说明进行操作,所以我不确定为什么会收到该错误。
这是我的尝试:
HttpRequest request = new HttpRequest(HttpMethods.GET);
request.setHeader("GET", "/appdata/:App_key");
request.setHeader("Host:", "baas.kinvey.com");
String authHeader = "Basic " + Base64Coder.encodeString("App_key:App_secret");
request.setHeader("Authorization:", authHeader);
request.setUrl("https://baas.kinvey.com/appdata/App_key");
System.out.println("HTTP REQUEST: " + request.getHeaders());
responseListener listener = new responseListener() {
public void handleHttpResponse (HttpResponse httpResponse) {
HttpStatus status = httpResponse.getStatus();
if (status.getStatusCode() >= 200 && status.getStatusCode() < 300) {
System.out.println("HTTP SUCCESS!");
} else {
System.out.println("HTTP ERROR: " + status.getStatusCode());
}
System.out.println("HTTP :" + httpResponse.getResultAsString());
}
@Override
public void failed(Throwable t) {
t.printStackTrace();
System.out.println("REQUEST FAILED!" +t.getMessage());
super.failed(t);
}
};
Gdx.net.sendHttpRequest(request, listener);
据我所知,标题有问题。我测试了将我带到登录屏幕的Url。在我将App密钥作为用户名并将主密钥作为密码输入后,登录工作正常。有什么明显的错误吗?有没有办法可以进一步调试?
答案 0 :(得分:2)
我是Kinvey的工程师,可以帮助你解决这个问题。
一些事情:
首先,你需要一些额外的标题。虽然它们可能不是问题的原因,但删除仍然是安全的:
request.setHeader("GET", "/appdata/:App_key");
request.setHeader("Host:", "baas.kinvey.com");
请注意,在您创建HttpRequest
时会设置GET,并在您定义URL时设置主机。
其次,在设置标题后,在“授权”之后删除冒号,使它看起来像这样:
request.setHeader("Authorization", authHeader);
另外,你提到它适用于你的主秘密而不是你的应用秘密吗?你能确保你是base64编码吗?
最后一件事 - 确保您使用实际的应用密钥替换App_Key
,在网址和标题中。