504错误访问Kinvey握手(Rest api)

时间:2013-11-04 23:20:42

标签: rest libgdx kinvey http-status-code-504

我一直试图让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密钥作为用户名并将主密钥作为密码输入后,登录工作正常。有什么明显的错误吗?有没有办法可以进一步调试?

1 个答案:

答案 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,在网址和标题中。