Okhttp 两次读取OKIO流

Okhttp 两次读取OKIO流,okhttp,okio,Okhttp,Okio,我正在使用OKHTTP进行网络连接,目前从response.charStream()获取一个charStream,然后将其传递给GSON进行解析。解析和膨胀后,我再次对模型放气,以使用流保存到磁盘。从networkReader到Model再到DiskWriter似乎需要额外的工作。OKIO是否可以从networkReader转到JSONParser(读卡器),也可以从networkReader转到DiskWriter(读卡器)。基本上,我希望能够从网络流中读取两次。您可以使用镜像源代码(取自)

我正在使用OKHTTP进行网络连接,目前从response.charStream()获取一个charStream,然后将其传递给GSON进行解析。解析和膨胀后,我再次对模型放气,以使用流保存到磁盘。从networkReader到Model再到DiskWriter似乎需要额外的工作。OKIO是否可以从networkReader转到JSONParser(读卡器),也可以从networkReader转到DiskWriter(读卡器)。基本上,我希望能够从网络流中读取两次。

您可以使用镜像源代码(取自)

用法如下所示:

MirroredSource mirroredSource = new MirroredSource(response.body().source()); //Or however you're getting your original source
Source originalSource = mirroredSource.original();
Source secondSource = mirroredSource.mirror();
doParsing(originalSource);
writeToDisk(secondSource);
originalSource.close();

如果您想要更健壮的东西,可以从OkHttp重新调整用途。

ha!这就是我的公关,但仍然有一些问题。这是更新版本,Jesse Wilson目前正在为OKHTTP Cache2开发类似的实现。
MirroredSource mirroredSource = new MirroredSource(response.body().source()); //Or however you're getting your original source
Source originalSource = mirroredSource.original();
Source secondSource = mirroredSource.mirror();
doParsing(originalSource);
writeToDisk(secondSource);
originalSource.close();