2

我正在尝试向RunKeeper API发出此请求:

GET /user HTTP/1.1
主机:api.runkeeper.com
授权:Bearer xxxxxxxxxxxxxxxx
接受:application/vnd.com.runkeeper.User+json

我的代码:

private static final String BASEURL = "http://api.runkeeper.com";  

public HttpResponse getUserInformation() throws IOException {
    DefaultHttpClient client = new DefaultHttpClient();
    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "UTF_8");
    HttpProtocolParams.setUseExpectContinue(params, false);

    client.setParams(params);
    HttpGet get = new HttpGet(BASEURL.concat("/user"));
    String credentials = getCredentials();
    get.addHeader("Authorization", "Basic " + credentials);
    get.addHeader("Accept", "application/vnd.com.runkeeper.User+json");
    return client.execute(get);
}

private String getCredentials() {
    String source = "Authorization" + ":" + "Bearer " + getAccessToken();
    String ret = Base64.encodeToString(source.getBytes(), Base64.URL_SAFE | Base64.NO_WRAP);
    return ret;
}

但我不断得到:

HTTP 状态 500 - 服务器遇到内部错误 () 阻止它完成此请求。

我的错误是什么?

4

1 回答 1

3

您使用的网址不正确。你应该/user只请求。

用这个添加一个接受头:

get.addHeader("Accept", "application/vnd.com.runkeeper.User+json");

你确定你正确地添加了你的凭据信息吗?文档说明 Authorization 标头应该看起来像Bearer xxxxxxxxxxxxxxxx,而您的则是Basic ...。无需进一步研究,也许这可能是解决方案:

get.addHeader("Authorization", "Bearer " + getAccessToken());

如果它仍然无法正常工作,页面指出如果您收到内部服务器错误,您应该联系他们以解决问题。我想这可以在这个 Google Group中完成。

于 2012-06-20T07:55:29.450 回答