我正在使用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();