From 9e35276aae3875e93c3e1f12c140cb716a2c82ee Mon Sep 17 00:00:00 2001 From: Johan Haleby Date: Tue, 11 Feb 2014 06:59:51 +0100 Subject: [PATCH] Added overloaded createRequest method that takes an HttpContext instance --- .../java/rx/apache/http/ObservableHttp.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/rxjava-contrib/rxjava-apache-http/src/main/java/rx/apache/http/ObservableHttp.java b/rxjava-contrib/rxjava-apache-http/src/main/java/rx/apache/http/ObservableHttp.java index 1ed64ea838..4ea4a591b2 100644 --- a/rxjava-contrib/rxjava-apache-http/src/main/java/rx/apache/http/ObservableHttp.java +++ b/rxjava-contrib/rxjava-apache-http/src/main/java/rx/apache/http/ObservableHttp.java @@ -21,6 +21,8 @@ import org.apache.http.nio.client.HttpAsyncClient; import org.apache.http.nio.client.methods.HttpAsyncMethods; import org.apache.http.nio.protocol.HttpAsyncRequestProducer; +import org.apache.http.protocol.Http.HttpContext; +import org.apache.http.protocol.BasicHttpContext; import rx.Observable; import rx.Observable.OnSubscribeFunc; @@ -134,6 +136,42 @@ public static ObservableHttp createGet(String uri, final * @return */ public static ObservableHttp createRequest(final HttpAsyncRequestProducer requestProducer, final HttpAsyncClient client) { + return createRequest(requestProducer, client, new BasicHttpContext()); + } + + /** + * Execute request using {@link HttpAsyncRequestProducer} to define HTTP Method, URI and payload (if applicable). + *

+ * If the response is chunked (or flushed progressively such as with text/event-stream Server-Sent Events) this will call + * {@link Observer#onNext} multiple times. + *

+ * Use {@code HttpAsyncMethods.create* } factory methods to create {@link HttpAsyncRequestProducer} instances. + *

+ * A client can be retrieved like this: + *

+ *

 {@code      CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault(); } 
+ *

+ * A client with custom configurations can be created like this: + *

+ *
 {@code
+     * final RequestConfig requestConfig = RequestConfig.custom()
+     *     .setSocketTimeout(3000)
+     *     .setConnectTimeout(3000).build();
+     * final CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
+     *     .setDefaultRequestConfig(requestConfig)
+     *     .setMaxConnPerRoute(20)
+     *     .setMaxConnTotal(50)
+     *     .build();
+     * httpclient.start();
+     * }
+ * + * + * @param requestProducer + * @param client + * @param context The HttpContext + * @return + */ + public static ObservableHttp createRequest(final HttpAsyncRequestProducer requestProducer, final HttpAsyncClient client, final HttpContext context) { return ObservableHttp.create(new OnSubscribeFunc() { @@ -144,7 +182,7 @@ public Subscription onSubscribe(final Observer o // return a Subscription that wraps the Future so it can be cancelled parentSubscription.add(Subscriptions.from(client.execute(requestProducer, new ResponseConsumerDelegate(observer, parentSubscription), - new FutureCallback() { + context, new FutureCallback() { @Override public void completed(HttpResponse result) {