使用AsyncHttpClient接收部分响应主体

时间:2016-04-12 14:28:00

标签: java json asynchttpclient

我正在使用AsyncHttpClient编写REST服务使用者类。服务返回一个JSON响应字符串,其中包含许多我不需要的额外数据。我只对收到回复的具体部分感兴趣。

例如,请考虑以下JSON Response

{
    "decisions": {
        "foo": "foo",
        "bar": "bar"
    }
    "internals": {
        "foobar": "foobar"
    }
}

现在,我只对decisions对象感兴趣,并且不想浪费时间和内存来获取internals,因为这在实际响应中是巨大的,我不需要它。

是否可以使用AsyncHttpClient?我该怎样实现这个目标?

以下是我班级的代码段:

AsyncHttpClient c = new AsyncHttpClient();
Future<String> f = c.prepareGet("http://www.foo.org/ba").execute(new AsyncHandler<String>() {
    private ByteArrayOutputStream bytes = new ByteArrayOutputStream();

    @Override
    public STATE onStatusReceived(HttpResponseStatus status) throws Exception {
        return STATE.CONTINUE;
    }

    @Override
    public STATE onHeadersReceived(HttpResponseHeaders h) throws Exception {
         return STATE.CONTINUE;
    }

    @Override
    public STATE onBodyPartReceived(HttpResponseBodyPart bodyPart) throws Exception {
         /* What shall I write here? */
         return STATE.CONTINUE;
    }

    @Override
    public String onCompleted() throws Exception {
         return bytes.toString("UTF-8");
    }

    @Override
    public void onThrowable(Throwable t) {
        /* TODO : Throw Exception */
    }
});

String bodyResponse = f.get();

0 个答案:

没有答案
相关问题