问题标签 [okio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
170 浏览

android - 如何使用 okio/okhttp 解码 http 请求数据包

我可以使用 Okio 和/或 OkHTTP 来解码从 ParcelFileDescriptor 读取的数据包吗?

我正在尝试VpnService在 android 上编写一个基于广告的拦截器。

我发现了一些使用VpnServiceNetGuardNetKnight)的开源项目,所以我可以向他们学习。

而且我知道 OkHTTP 可以使用urland发出请求method,这意味着它可以理解类似的东西GET http://stackoverflow.com Http/1.1,并将其转换为真正的基于 TCP/IP 的请求,甚至解码响应。因此,我尝试阅读 Okio 的一些源代码以了解它的作用,但失败了。

所以我想知道我是否可以使用 Okio 的组件来解码/编码 TCP/IP 数据包?

0 投票
1 回答
616 浏览

kotlin - 将 OutputStream 转换为 Okio 源

我试图找到优雅的方法将方法OutputStream生成的转换bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream)为 Okio 的Source/ InputStream(需要进一步操作数据 - 编码),同时维护数据缓冲区。

我尝试使用

但这仍然存在bitmap.compress

0 投票
1 回答
571 浏览

java - 由已分配的 ByteString 支持的高效 okio 源?

使用 OkHttp Websocket 时,侦听器使用 ByteString 向应用程序提供二进制有效负载。我想将这些字节输入到一些采用 okio.Source(在本例中为 GzipSource)的代码中,但我找不到任何有效地执行此操作的好方法。

我目前的解决方案如下所示:

这样做的缺点Buffer.write是它会产生额外的字节副本(在 Buffer 的情况下,是分段的,即使池化也是额外的开销)。WebSocketReader在这个 Websocket 案例中,一个字节数组只是为 ByteString 本身分配的(当从impl移交时)。

我的问题是:有没有其他首选的方式来读取 a ByteString,通过 a Source?由于ByteString应该是不可变的并且 aSource只会保存一些读取位置信息,我认为它应该是完全可行的(但不是来自外部代码,因为我无法访问byte[]).. 所以感觉就像我错过了这里有明显的解决方案.. :)

感谢您的任何提示或指示!

0 投票
0 回答
91 浏览

android - BadPaddingException:尝试解码时垫块损坏

我在尝试解码 InputStream 时遇到了 BadPaddingException。当我使用杰克逊时,我能够对 OutputStream/InputStream 进行编码/解码,但是当我尝试使用 Okio 时,它会抛出 BadPaddingException。

getEncodeStream() 和 getDecodeStream() 方法在 Jackson 上运行良好,但似乎与 Okio 不同。

编码文件的输出 = FxGOXOwOWzBGMa7+u+E3TvNTOjFv/vKKsSt+Q1+QsedtluVa6sULFhOImRO+pYQp43h/HsrssNm0 UpxcC2cvbM4+ix9nH5YUfCK0NJjzT2iR9tJG8tXTrLSCz/B/6WEQ

0 投票
1 回答
316 浏览

retrofit2 - Okio 的 BufferedSource request() 只触发一次

根据https://futurestud.io/tutorials/retrofit-2-how-to-download-files-from-server上的精彩教程,我正在使用 REST API 的 Retrofit2 实现下载文件。

我的 API 接口声明了@GETas @Streaming,实际上,当我从InputStream给定的 by中读取时byteStream(),我可以读取整个 29 MB 文件。

我想做的是以 4 MB 的块读取所有内容,所以我使用的是 Okio 的方便BufferedSource. 问题是我的调用只request(4*1024*1024)返回一次,尽管总文件大小约为 29 MB。true

我的爪哇:

控制台输出:

同样,原始文件InputStream确实给了我完整的 29 MB,我以前做过。我误解了request()吗?我究竟做错了什么?

0 投票
1 回答
170 浏览

android - 如何使用 Okio 发出 post 请求?

我正在使用 Okio 下载文件....根据我的请求,我正在发送一些参数,但由于我没有得到我的文件并且我能够记录我的请求,这就是所看到的:

为什么标签为空?这意味着参数为空

请求:请求{method=POST, url= https://mywesite.com/ , tag=null}

0 投票
0 回答
390 浏览

android - 使用 okhttp 和 okio 下载 pdf

我在我的应用程序中下载 pdf 时遇到了一些问题。由于以下消息(格式无效),某些 pdf 无法打开

错误 = 无法创建文档:文件不是 PDF 格式或已损坏

Okhttp 设置代码:

请求代码:

但是如果我在 chrome 浏览器中复制那个 url,chrome 会下载它,我可以用 google pdf 查看器打开它。该文件也比我从应用程序代码中下载的文件小。我不知道如何解决这个问题,它认为这与文件的处理方式有关,保存在响应回调中。

0 投票
2 回答
2558 浏览

android - 如何解决:“未解析的引用:缓冲区”或“使用 'buffer(Source): BufferedSource' 是一个错误。移至扩展函数”?

我有 3 行代码从 OkHttp3 源获取正文:

在另一台计算机上出现错误:“使用'buffer(Source):BufferedSource'是一个错误。移至扩展功能”

因此,通过将最后一行替换为:

bun 现在在第一台计算机上出现错误:“未解析的引用:缓冲区”所以我需要恢复该更改。

怎么了?基于错误消息,我无法弄清楚。似乎是gradle配置的问题。但是什么?如何在两台计算机上编译代码。

0 投票
0 回答
490 浏览

android - 发布大型请求时如何解决来自 Timimg Out 的改造写入

POST 大型(17048 字节)API 请求时,我的 Android 应用程序开始失败,如下所示

17048 字节的请求是“太大”还是应该改造能够处理这个?

这是一个“后端”问题吗?

无论如何我可以在客户端解决这个问题吗?

我配置改造如下: -

0 投票
0 回答
146 浏览

android - 在 Okio 中下载文件时显示 ProgressBar

我使用 OKHTTP3 库下载文件,然后使用 Okio.buffer 将文件保存到磁盘,但我想在连续下载时显示进度条,我该如何使用 Okio 做到这一点?