Thanks Oleg.

On 6 March 2012 15:28, Oleg Kalnichevski <[email protected]> wrote:
> On Tue, Mar 06, 2012 at 01:20:19PM +0000, Ben Short wrote:
>> Hi,
>>
>> I have something working as shown below. The input and output streams
>> are managed outside of the doHttpRequest. Does this seam like a
>> reasonable solution?
>>
>> public class InputStreamSessionInputBuffer extends 
>> AbstractSessionInputBuffer {
>>
>>     public InputStreamSessionInputBuffer(final InputStream is, final
>> HttpParams params) {
>>         super();
>>         init(is, 1024, params);
>>     }
>>
>>     public boolean isDataAvailable(int timeout) throws IOException {
>>         boolean result = hasBufferedData();
>>         if (!result) {
>>             fillBuffer();
>>             result = hasBufferedData();
>>         }
>>         return result;
>>     }
>> }
>>
>>
>> public class OutputStreamSessionInputBuffer extends
>> AbstractSessionOutputBuffer {
>>
>>     public OutputStreamSessionInputBuffer(final OutputStream os, final
>> HttpParams params) {
>>         super();
>>         init(os, 1024, params);
>>     }
>> }
>>
>> public class StreamHttpClientConnection extends AbstractHttpClientConnection 
>> {
>>
>>     private boolean open = false;
>>     private InputStream is;
>>     private OutputStream os;
>>     private SessionInputBuffer inputBuffer;
>>     private SessionOutputBuffer outputBuffer;
>>
>>     public StreamHttpClientConnection() {
>>     }
>>
>>     public void init(InputStream is, OutputStream os, HttpParams
>> params) throws IOException {
>>
>>         this.is = is;
>>         this.os = os;
>>
>>         this.inputBuffer = new InputStreamSessionInputBuffer(is, params);
>>         this.outputBuffer = new OutputStreamSessionInputBuffer(os, params);
>>
>>         init(this.inputBuffer, this.outputBuffer, params);
>>
>>         this.open = true;
>>     }
>>
>>     @Override
>>     protected void assertOpen() throws IllegalStateException {
>>         if (!this.open) {
>>             throw new IllegalStateException("Connection is not open");
>>         }
>>     }
>>
>>     public void close() throws IOException {
>>         if (!this.open) {
>>             return;
>>         }
>>         this.open = false;
>>
>>         this.os.flush();
>>     }
>>
>>     public boolean isOpen() {
>>         return this.open;
>>     }
>>
>>     public void setSocketTimeout(int i) {
>>     }
>>
>>     public int getSocketTimeout() {
>>         return -1;
>>     }
>>
>>     public void shutdown() throws IOException {
>>         this.close();
>>     }
>> }
>>
>>
>> public static void doHttpRequest(InputStream is, OutputStream os)
>> throws IOException, HttpException {
>>
>>         HttpParams params = new SyncBasicHttpParams();
>>         HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>>         HttpProtocolParams.setContentCharset(params, "UTF-8");
>>         HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
>>         HttpProtocolParams.setUseExpectContinue(params, true);
>>
>>         HttpProcessor httpproc = new ImmutableHttpProcessor(new
>> HttpRequestInterceptor[] {
>>                 // Required protocol interceptors
>>                 new RequestContent(),
>>                 new RequestTargetHost(),
>>                 // Recommended protocol interceptors
>>                 new RequestConnControl(),
>>                 new RequestUserAgent(),
>>                 new RequestExpectContinue()});
>>
>>         HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
>>
>>         HttpContext context = new BasicHttpContext(null);
>>         HttpHost host = new HttpHost("10.10.20.60", 4050);
>>
>>         StreamHttpClientConnection conn = new StreamHttpClientConnection();
>>
>>         //DefaultHttpClientConnection conn = new 
>> DefaultHttpClientConnection();
>>         ConnectionReuseStrategy connStrategy = new
>> DefaultConnectionReuseStrategy();
>>
>>         context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
>>         context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
>>
>>         conn.init(is, os, params);
>>
>>         //conn.bind(new Socket(host.getHostName(), host.getPort()), params);
>>
>>         HttpRequest request = new BasicHttpRequest("GET",
>> "/messages?validity=active_only");
>>
>>         httpexecutor.preProcess(request, httpproc, context);
>>         HttpResponse response = httpexecutor.execute(request, conn, context);
>>         response.setParams(params);
>>         httpexecutor.postProcess(response, httpproc, context);
>>
>>         System.out.println("<< Response: " + response.getStatusLine());
>>         System.out.println(EntityUtils.toString(response.getEntity()));
>>
>>         conn.shutdown();
>>     }
>>
>
> Looks all right to me.
>
> Cheers
>
> Oleg
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to