0

Android から setlist.fm API を呼び出したことがある人はいますか? 次のコードを実行しようとしています。

        DefaultHttpClient client = new DefaultHttpClient();
        HttpGet getRequest;

        try
        {
            getRequest = new HttpGet(url);
            HttpResponse getResponse = client.execute(getRequest);
            HttpEntity getResponseEntity = getResponse.getEntity();
            return getResponseEntity.getContent();
        }
        catch (Exception e)
        {
            Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
            return null;
        }

しかし、私は2つの問題に遭遇したようです。実行は常に 200 の statusline で正しく返るように見えますが、エンティティを取得しようとすると、応答オブジェクトが basichttpentity オブジェクトが返されたことを示していても、長さは -1 です。また、 getContent を呼び出そうとすると、何らかの理由で一般的な例外が発生して爆発します。私が使用しようとしているサンプル API 呼び出しはhttp://api.setlist.fm/rest/0.1/search/setlists.json?artistName=Princeです。

どんな提案でも大歓迎です。

ありがとう!

4

1 に答える 1

0

私は問題を理解しました。API から返された応答がストリーミングされ、チャンクになっているようです。完了する前にエンティティを取得しようとしていました。このコードを削除しました:

HttpEntity getResponseEntity = getResponse.getEntity();
return getResponseEntity.getContent();

そしてそれを次のように置き換えました:

return EntityUtils.toString(getResponse.getEntity());
于 2012-07-12T12:33:22.080 に答える