2

RunKeeper APIにこのリクエストを送信しようとしています:

GET / user HTTP / 1.1
ホスト:api.runkeeper.com
承認:ベアラー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

使用している URL が正しくありません。お願いする/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 に答える