List of usage examples for org.apache.http.nio.entity ContentListener ContentListener
ContentListener
From source file:com.alibaba.openapi.client.rpc.AliNHttpRequstExecutionHandler.java
public ConsumingNHttpEntity responseEntity(final HttpResponse httpResponse, final HttpContext context) throws IOException { //System.out.println("AliNHttpRequstExecutionHandler responseEntity"); LoggerHelper.getClientLogger().finer("Enter request handler's response entity."); final InvokeContext invokeContext = (InvokeContext) context.getAttribute(CONTEXT_ATTACHMENT); final Response response = protocolProvider .getResponseParser(invokeContext.getPolicy().getResponseProtocol()) .initResponse(httpResponse, invokeContext); //ConsumingNHttpEntityTemplateContentListener?? ContentListener contentListener = new ContentListener() { private final SimpleInputBuffer buffer = new SimpleInputBuffer(2048, allocator); @SuppressWarnings("unchecked") public void finished() { InputStream istream = new ContentInputStream(this.buffer); protocolProvider.getResponseParser(invokeContext.getPolicy().getResponseProtocol()) .parseResponse(httpResponse, istream, response, invokeContext); invokeContext.completed();/*from w w w .j a va2 s. c om*/ if (response.getException() != null) { invokeContext.failed(response.getException()); } else { try { ((FutureCallback<Object>) invokeContext.getCallback()).completed(response.getResult()); } catch (RuntimeException e) { invokeContext.failed(e); } } } //TODO ??,?? public void contentAvailable(ContentDecoder decoder, IOControl ioctrl) throws IOException { this.buffer.consumeContent(decoder); LoggerHelper.getClientLogger().finer("content Listener " + this.buffer.available()); } }; HttpEntity entity = httpResponse.getEntity(); return new ConsumingNHttpEntityTemplate(entity, contentListener); }