Jalena Blog

  • 首页
  • 程序开发
    • Java
    • Spring
    • SpringBoot
    • SpringMvc
    • Python
    • Odoo
    • C#
    • SQL
    • Web
    • Linux
  • 移动设备
    • Android
    • Router
  • 杂七杂八
    • 我的废话
    • 音频
    • 视频
    • 常用软件
  • 关于
  1. 首页
  2. 软件开发
  3. Android
  4. 正文

Android 串行网络请求

2024-08-15

需求是这样,有一个业务,它有很多的单据,且用户将单据均进行了维护,然后需要将这些单据一并提交回业务系统,但业务系统不能同时提交多个请求,它需要一定的间隔。

提交接口定义

@POST("sap/save")
Single<Response<String>> createTo(@Body Request<List<Order>> request, @Query("client") String client);

业务数据

List<Voucher> vouchers = _vouchers.getValue();

// 分组数据,然后进行提交
Map<String, List<MaterialVoucherQueryResponse>> groups = vouchers.parallelStream().collect(Collectors.groupingBy(MaterialVoucherQueryResponse::getTransferApply));

将业务数据转换为提交请求并串行提交

Flowable.fromIterable(groups.entrySet())
	.concatMapSingle(entry -> FineClient.getInstance().createTo(buildRequest(entry.getValue()), "WMS")
			.subscribeOn(Schedulers.io())
			.observeOn(Schedulers.computation())
			.onErrorResumeNext(Single::error))
	.toList()	// 收集所有的Response对象或异常到一个列表中
	.subscribeOn(Schedulers.io())	// 在IO线程上执行操作
	.observeOn(Schedulers.single())	// 在单一线程上处理最终的列表
	.subscribe(new SingleObserver<>() {
		@Override
		public void onSubscribe(@NonNull Disposable disposable) {
			addSubscription(disposable);
		}

		@Override
		public void onSuccess(@NonNull List<Response<String>> responses) {
			StringBuilder message = new StringBuilder();
			if (CollectionUtils.isNotEmpty(responses)) {
				_submitResponse.postValue(responses);

				for (Response<String> result : responses) {
					message.append(result.getMessage())
							.append("\n");
				}

				postMessage(new ResultState<>(StateEnum.SAP, message.toString()));
			}

			setLoading(false);
		}

		@Override
		public void onError(@NonNull Throwable e) {
			setLoading(false);
			postMessage(new ResultState<>(StateEnum.SAP, e.getMessage()));
		}
	});
标签: Android
最后更新:2024-08-15

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

【腾讯云】云服务器特惠热卖中
标签聚合
java Centos odoo 其他 生活 wordpress docker MySql
分类
  • Android / 4篇
  • C# / 10篇
  • Codec / 9篇
  • Conversion / 14篇
  • Editing / 16篇
  • Java / 47篇
  • Javascript / 3篇
  • Linux / 29篇
  • Odoo / 25篇
  • Python / 6篇
  • SQL / 30篇
  • Web / 3篇
  • Windows / 4篇
  • 我的日记 / 10篇
  • 杂七杂八 / 93篇
  • 软件开发 / 72篇
  • 非线性编辑 / 1篇

COPYRIGHT © 2026 Jalena Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备17025376号