问题标签 [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.
android - 如何使用 okio/okhttp 解码 http 请求数据包
我可以使用 Okio 和/或 OkHTTP 来解码从 ParcelFileDescriptor 读取的数据包吗?
我正在尝试VpnService
在 android 上编写一个基于广告的拦截器。
我发现了一些使用VpnService
(NetGuard,NetKnight)的开源项目,所以我可以向他们学习。
而且我知道 OkHTTP 可以使用url
and发出请求method
,这意味着它可以理解类似的东西GET http://stackoverflow.com Http/1.1
,并将其转换为真正的基于 TCP/IP 的请求,甚至解码响应。因此,我尝试阅读 Okio 的一些源代码以了解它的作用,但失败了。
所以我想知道我是否可以使用 Okio 的组件来解码/编码 TCP/IP 数据包?
kotlin - 将 OutputStream 转换为 Okio 源
我试图找到优雅的方法将方法OutputStream
生成的转换bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream)
为 Okio 的Source
/ InputStream
(需要进一步操作数据 - 编码),同时维护数据缓冲区。
我尝试使用
但这仍然存在bitmap.compress
。
java - 由已分配的 ByteString 支持的高效 okio 源?
使用 OkHttp Websocket 时,侦听器使用 ByteString 向应用程序提供二进制有效负载。我想将这些字节输入到一些采用 okio.Source(在本例中为 GzipSource)的代码中,但我找不到任何有效地执行此操作的好方法。
我目前的解决方案如下所示:
这样做的缺点Buffer.write
是它会产生额外的字节副本(在 Buffer 的情况下,是分段的,即使池化也是额外的开销)。WebSocketReader
在这个 Websocket 案例中,一个字节数组只是为 ByteString 本身分配的(当从impl移交时)。
我的问题是:有没有其他首选的方式来读取 a ByteString
,通过 a Source
?由于ByteString
应该是不可变的并且 aSource
只会保存一些读取位置信息,我认为它应该是完全可行的(但不是来自外部代码,因为我无法访问byte[]
).. 所以感觉就像我错过了这里有明显的解决方案.. :)
感谢您的任何提示或指示!
android - BadPaddingException:尝试解码时垫块损坏
我在尝试解码 InputStream 时遇到了 BadPaddingException。当我使用杰克逊时,我能够对 OutputStream/InputStream 进行编码/解码,但是当我尝试使用 Okio 时,它会抛出 BadPaddingException。
getEncodeStream() 和 getDecodeStream() 方法在 Jackson 上运行良好,但似乎与 Okio 不同。
编码文件的输出 = FxGOXOwOWzBGMa7+u+E3TvNTOjFv/vKKsSt+Q1+QsedtluVa6sULFhOImRO+pYQp43h/HsrssNm0 UpxcC2cvbM4+ix9nH5YUfCK0NJjzT2iR9tJG8tXTrLSCz/B/6WEQ
retrofit2 - Okio 的 BufferedSource request() 只触发一次
根据https://futurestud.io/tutorials/retrofit-2-how-to-download-files-from-server上的精彩教程,我正在使用 REST API 的 Retrofit2 实现下载文件。
我的 API 接口声明了@GET
as @Streaming
,实际上,当我从InputStream
给定的 by中读取时byteStream()
,我可以读取整个 29 MB 文件。
我想做的是以 4 MB 的块读取所有内容,所以我使用的是 Okio 的方便BufferedSource
. 问题是我的调用只request(4*1024*1024)
返回一次,尽管总文件大小约为 29 MB。true
我的爪哇:
控制台输出:
同样,原始文件InputStream
确实给了我完整的 29 MB,我以前做过。我误解了request()
吗?我究竟做错了什么?
android - 如何使用 Okio 发出 post 请求?
我正在使用 Okio 下载文件....根据我的请求,我正在发送一些参数,但由于我没有得到我的文件并且我能够记录我的请求,这就是所看到的:
为什么标签为空?这意味着参数为空
请求:请求{method=POST, url= https://mywesite.com/ , tag=null}
android - 使用 okhttp 和 okio 下载 pdf
我在我的应用程序中下载 pdf 时遇到了一些问题。由于以下消息(格式无效),某些 pdf 无法打开
错误 = 无法创建文档:文件不是 PDF 格式或已损坏
Okhttp 设置代码:
请求代码:
但是如果我在 chrome 浏览器中复制那个 url,chrome 会下载它,我可以用 google pdf 查看器打开它。该文件也比我从应用程序代码中下载的文件小。我不知道如何解决这个问题,它认为这与文件的处理方式有关,保存在响应回调中。
android - 如何解决:“未解析的引用:缓冲区”或“使用 'buffer(Source): BufferedSource' 是一个错误。移至扩展函数”?
我有 3 行代码从 OkHttp3 源获取正文:
在另一台计算机上出现错误:“使用'buffer(Source):BufferedSource'是一个错误。移至扩展功能”
因此,通过将最后一行替换为:
bun 现在在第一台计算机上出现错误:“未解析的引用:缓冲区”所以我需要恢复该更改。
怎么了?基于错误消息,我无法弄清楚。似乎是gradle配置的问题。但是什么?如何在两台计算机上编译代码。
android - 发布大型请求时如何解决来自 Timimg Out 的改造写入
POST 大型(17048 字节)API 请求时,我的 Android 应用程序开始失败,如下所示
17048 字节的请求是“太大”还是应该改造能够处理这个?
这是一个“后端”问题吗?
无论如何我可以在客户端解决这个问题吗?
我配置改造如下: -
android - 在 Okio 中下载文件时显示 ProgressBar
我使用 OKHTTP3 库下载文件,然后使用 Okio.buffer 将文件保存到磁盘,但我想在连续下载时显示进度条,我该如何使用 Okio 做到这一点?