From fafdeae594f79bad8133837e5cde239afca4da54 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期五, 06 十二月 2024 16:13:02 +0800 Subject: [PATCH] 1.优化工单列表状态显示 2.接口添加token失效判断,失效后跳转到登录界面。 --- app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressRequestBody.java | 52 +++++++++++++++++++++++++++++----------------------- 1 files changed, 29 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressRequestBody.java b/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressRequestBody.java index 964c1c4..eacf50d 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressRequestBody.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressRequestBody.java @@ -1,14 +1,14 @@ package com.dayu.pipirrapp.net.upload; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import okhttp3.MediaType; import okhttp3.RequestBody; +import okio.Buffer; import okio.BufferedSink; -import okio.BufferedSource; +import okio.ForwardingSink; import okio.Okio; +import okio.Sink; /** * ProgressRequestBody - @@ -18,36 +18,42 @@ * @since 2024-11-28 */ public class ProgressRequestBody extends RequestBody { - private File file; - private ProgressListener listener; - private MediaType mediaType; + private final RequestBody requestBody; + private final ProgressListener progressListener; - public ProgressRequestBody(File file, ProgressListener listener, String mimeType) { - this.file = file; - this.listener = listener; - this.mediaType = MediaType.parse(mimeType); + public ProgressRequestBody(RequestBody requestBody, ProgressListener progressListener) { + this.requestBody = requestBody; + this.progressListener = progressListener; } @Override public MediaType contentType() { - return mediaType; + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); } @Override public void writeTo(BufferedSink sink) throws IOException { - try (FileInputStream fileInputStream = new FileInputStream(file); - BufferedSource source = (BufferedSource) Okio.source(fileInputStream)) { - long totalBytes = file.length(); - long bytesWritten = 0; - long read; - byte[] buffer = new byte[2048]; - while ((read = source.read(buffer)) != -1) { - sink.write(buffer, 0, (int) read); - bytesWritten += read; - if (listener != null) { - listener.onProgress(bytesWritten, totalBytes); + Sink progressSink = new ForwardingSink(sink) { + long totalBytesWritten = 0; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + totalBytesWritten += byteCount; + if (progressListener != null) { + progressListener.onProgress(totalBytesWritten, contentLength(),false); } } - } + }; + BufferedSink bufferedSink = Okio.buffer(progressSink); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); } + + } \ No newline at end of file -- Gitblit v1.8.0