Example usage for org.apache.http.nio.entity ContentListener ContentListener

List of usage examples for org.apache.http.nio.entity ContentListener ContentListener

Introduction

In this page you can find the example usage for org.apache.http.nio.entity ContentListener ContentListener.

Prototype

ContentListener

Source Link

Usage

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);
}