2013-11-04 59 views
1

我一直试图让Kinvey handshake为REST api工作一段时间,但没有任何运气。我正在使用libgdx's net class发送http请求。 Wverytime我发送请求我得到一个504(网关超时)错误。我按照网站上的说明进行操作,因此我不确定为什么会出现该错误。504错误访问Kinvey握手(Rest api)

这里是我的尝试:

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密钥作为用户名和主密钥作为密码后,登录工作。有什么明显的错误吗?有没有一种方法可以进一步调试?

回答

2

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

有两件事情:

第一,有一些额外的头那里,你不需要。虽然他们可能不是问题的原因,它仍然是安全地删除:

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

注意,GET当您创建HttpRequest被设定,当您定义的URL主机设置。

其次,经过“授权”设置你的头的时候,使它看起来像这样摆脱结肠:

request.setHeader("Authorization", authHeader); 

另外,你提到它与你的主密钥,但不与你的应用程序的秘密?你能确保你是base64编码吗?

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

+0

谢谢!问题是冒号不是GET或主机头。从授权和主机中删除冒号解决了问题。 – eBehbahani