diff --git a/app/src/main/java/org/ntlab/developrx/JavaMainActivity.java b/app/src/main/java/org/ntlab/developrx/JavaMainActivity.java index 2895bfb..846a7b0 100644 --- a/app/src/main/java/org/ntlab/developrx/JavaMainActivity.java +++ b/app/src/main/java/org/ntlab/developrx/JavaMainActivity.java @@ -7,7 +7,6 @@ import java.util.concurrent.TimeUnit; import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; /** * Created by matsumoto_k on 2017/11/11. @@ -62,13 +61,16 @@ addressHttpConnection.addPathParam("api"); addressHttpConnection.addPathParam("search"); addressHttpConnection.addQueryParam("zipcode", "6731102"); - addressHttpConnection.doGet() - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - response -> System.out.println(response), - error -> error.printStackTrace(), - () -> System.out.println("onComplete")); + addressHttpConnection.doGet(); }); + + addressHttpConnection.getPublishSubject(). + throttleFirst(5000, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + response -> System.out.println(response), + error -> error.printStackTrace(), + () -> System.out.println("onComplete") + ); } } diff --git a/app/src/main/java/org/ntlab/developrx/ObservableHttpConnection.java b/app/src/main/java/org/ntlab/developrx/ObservableHttpConnection.java index 33abddb..b3f8e6c 100644 --- a/app/src/main/java/org/ntlab/developrx/ObservableHttpConnection.java +++ b/app/src/main/java/org/ntlab/developrx/ObservableHttpConnection.java @@ -12,6 +12,8 @@ import java.net.URL; import io.reactivex.Observable; +import io.reactivex.schedulers.Schedulers; +import io.reactivex.subjects.PublishSubject; /** * Created by matsumoto_k on 2017/11/16. @@ -25,15 +27,21 @@ private String queryParams = ""; private String method = ""; - public Observable getResponse() { - return Observable.just(baseUrl) - .flatMap(url -> Observable.just(getHttp(new URL(baseUrl)))); - } + private PublishSubject publishSubject = PublishSubject.create(); public ObservableHttpConnection(String baseUrl) { this.baseUrl = baseUrl; } + public void connection() { + Observable.just(baseUrl) + .subscribeOn(Schedulers.computation()) + .flatMap(url -> Observable.just(getHttp(new URL(baseUrl)))) + .subscribe(response -> { + publishSubject.onNext(response); + }); + } + public String getHttp(URL url) { try { if (queryParams.isEmpty() || queryParams.isEmpty()) { @@ -86,24 +94,24 @@ return writer.toString(); } - public Observable doGet() { + public void doGet() { method = "GET"; - return getResponse(); + connection(); } - public Observable doPost() { + public void doPost() { method = "POST"; - return getResponse(); + connection(); } - public Observable doPut() { + public void doPut() { method = "PUT"; - return getResponse(); + connection(); } - public Observable doDelete() { + public void doDelete() { method = "DELETE"; - return getResponse(); + connection(); } public void addQueryParam(String key, String value) { @@ -123,4 +131,8 @@ public void addPathParam(String param) { pathParams += "/" + param; } + + public PublishSubject getPublishSubject() { + return publishSubject; + } }