OkHttpClient 支持查询参数中的编码特殊字符,如 %20(+)

问题描述

我们已经将我们的产品从 Apache HttpClient 升级到 OkHttpClient。但是在迁移之后,当 %20(+) 之类的特殊字符在 URL param 或 query param 中传递时,它会按原样发送到客户端,在那里解码并使用 Apache HttpClient 发送到客户端。

例如:http://ip:port/testURL?A%20B -> http://ip:port/testURL?A+B (Apache HttpClient) http://ip:port/testURL?A%20B -> http://ip:port/testURL?A%20B ( OkHttpClient)

解决方法

OkHttp 尝试尽可能多地保留输入 URL。如果要将部分转换为规范形式,请使用 HttpUrl.Builder 并独立设置每个部分,可能使用原始解析的 HttpUrl 作为输入。