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

Posted

技术标签:

【中文标题】如何使用 okio/okhttp 解码 http 请求数据包【英文标题】:How to decode a http request packet with okio/okhttp 【发布时间】:2019-04-25 08:41:49 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

是的。使用普通 API 创建一个 Socket,然后使用 Okio.source(Socket)Okio.sink(Socket) 从中获取流。另外不要忘记您可以使用Okio.buffer() 缓冲这些流。

【讨论】:

socket是怎么来的? ***Service 返回一个 ParcelFileDescriptor。

以上是关于如何使用 okio/okhttp 解码 http 请求数据包的主要内容,如果未能解决你的问题,请参考以下文章

如何正确解码 Java 中的 SAML 请求(HTTP 重定向)?

如何使用转义的 unicode 解码字符串?

如何在 Flutter 中解码 Gzip Http 响应?

如何使用 Golang 解码 Reddit 的 RSS?

http协议中的编码和解码

如何把一个web集群由HTTP转换为HTTPS