Hello!

Given:

API from SMS service, the request looks like this (using Retrofit2 ):

  @POST("testsend/?") Observable<SmsStatus> sendSMS( @Field("user") String user, @Field("password") String password, @Field("to") String to, @Field("text") String text, @Field("from") String from, @Field("answer")String answer ); 

Observable:

  ApiSms service = ServiceGenerator.createService(ApiSms.class); Observable<SmsStatus> observSmsStatus = service.sendSMS( "****************"//тут логин ,"****************"// тут API-key ,"************"//тут номер ,"test" ,"news" ,"json"//формат ответа ); observSmsStatus .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<SmsStatus>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.e("It's not ok", e.getMessage()); } @Override public void onNext(SmsStatus smsStatus) { Log.e("It's ok",smsStatus.result); } }); 

It works. SMS is sent.

Question:

I need to make 5 asynchronous HTTP requests (each of them sends an SMS message and receives JSON ). That is, 5 requests to the network start simultaneously, and the answers have access to the UI stream.

How can this be implemented using RxJava ?

    1 answer 1

    You need to run 5 A of synchronous requests.

     public interface RestApi { String URL = "http://server/"; RestApi api = new Retrofit.Builder() .baseUrl(URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io())) .build() .create(RestApi.class); @POST("testsend/?") Observable<SmsStatus> sendSMS( @Field("user") String user, @Field("password") String password, @Field("to") String to, @Field("text") String text, @Field("from") String from, @Field("answer")String answer ); } public class MainClass{ public void makeRequests(){ request(...params1....); request(...params2....); request(...params3....); request(...params4....); request(...params5....); } private void request(...params...) { RestApi.api.sendSMS(....params....) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(...implementation...); } } 
    • Thank you very much, now I will try - no news