gpt4 book ai didi

codenameone - 使用 RequestBuilder 跟踪上传进度的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 09:06:22 28 4
gpt4 key购买 nike

我正在尝试跟踪上传进度。我可以在下载时通过简单地添加 ProgressListener 来做到这一点。到NetworkManager但是当上传并做同样的事情时,我只收到 1 个最终上传大小的回调
我在代码中看到有一些处理网络事件类型的私有(private)方法ConnectionRequest好像有一个public设置请求类型的方法setWriteRequest我正在使用简洁的 RequestBuilder默认情况下设置 setWriteRequest 的值至true只要有一个 body (有)
所以我真的不知道为什么上传大小只返回 1 个回调。我错过了什么吗?
我的最终代码看起来像这样

ActionListener<NetworkEvent> progressListener = new ActionListener<NetworkEvent>(){
@Override
public void actionPerformed(NetworkEvent evt) {
int getSentReceived = evt.getSentReceived();//this only gets total size, no partial upload progress received
}
};
NetworkManager.getInstance().addProgressListener(progressListener);
RequestBuilder req = Rest.post(url).body(body).header("Content-Type", "application/json").fetchAsJsonMap(resp -> {
NetworkManager.getInstance().removeProgressListener(progressListener);
});
编辑:我已经在模拟器、Android 和 iOS 上仔细检查了这种行为

最佳答案

这已经很久没有正常工作了:https://github.com/codenameone/CodenameOne/issues/3043
还有这个:https://github.com/codenameone/CodenameOne/issues/2087
问题的症结在于上传不像下载那样工作。下载时,我们向文件发出请求并将其取回。 Upload 将流写入请求的正文,然后提交该请求。因此,将流写入正文很快(并显示进度),但是对于我们来说,提交是原子的,所以我们无法监控它。
唯一真正的解决方法是避免分段上传或将您的上传分成更小的独立部分。您可以使用提供较低级别可跟踪 API 的 websocket。

关于codenameone - 使用 RequestBuilder 跟踪上传进度的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63433699/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com