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]
