1

我一直试图让 REST api 的 Kinvey握手工作一段时间,但没有任何运气。我正在使用libgdx 的网络类来发送 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 密钥作为用户名和主密码作为密码后,登录工作。有什么明显的错误吗?有没有办法可以进一步调试?

4

1 回答 1

2

我是 Kinvey 的工程师,可以帮助您解决这个问题。

几件事:

首先,那里有一些您不需要的额外标题。虽然它们可能不是问题的原因,但仍然可以安全地删除:

request.setHeader("GET", "/appdata/:App_key");
request.setHeader("Host:", "baas.kinvey.com");

请注意, GET 在您创建时设置HttpRequest,而 Host 在您定义 URL 时设置。

其次,在设置header时去掉“授权”后的冒号,使其看起来像这样:

request.setHeader("Authorization", authHeader);

另外,您提到它适用于您的主密码,但不适用于您的应用密码?你能确保你都是base64编码吗?

最后一件事 - 确保App_Key在 URL 和标题中替换为实际的应用程序密钥。

于 2013-11-05T17:04:16.897 回答