You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级OkHttp3时MultipartBody.Builder报包不存在错误问题咨询

报错原因

你遇到的编译错误由两个问题共同导致:

  1. API常量引用路径错误:OkHttp3 中代表multipart/form-data类型的FORM静态常量是定义在MultipartBody类下的,而非内部类MultipartBody.Builder下。你写MultipartBody.Builder.FORM时,编译器会将路径解析为「MultipartBody包下的Builder类的FORM属性」,误把类名识别为包名,最终抛出包不存在的错误。
  2. 包路径导入不匹配:旧版OkHttp(2.x及之前)的根包路径为com.squareup.okhttp,OkHttp3 全版本的根包路径统一调整为okhttp3,如果迁移时没有同步修改import语句,也会触发类/包找不到的编译错误。
修复方案

按以下步骤调整即可解决问题:

  • 替换文件头部的相关import语句,删除旧版OkHttp的MultipartBuilder导入,添加OkHttp3的对应类导入:
import okhttp3.Headers;
import okhttp3.MultipartBody;
  • 修正方法内的常量引用路径,将MultipartBody.Builder.FORM修改为MultipartBody.FORM,修正后的方法核心代码如下:
public Content postForm(String url, Headers hdrs, ConsumerWithErr<MultipartBody.Builder> form) throws Exception {
    MultipartBody.Builder mp = new MultipartBody.Builder().type(MultipartBody.FORM);
    form.accept(mp);
    // 后续原有请求构建、发起的业务逻辑无需改动
}
  • 迁移补充注意:OkHttp3的MultipartBody.Builder添加文件表单部件时,会自动根据文件后缀探测匹配Content-Type,和旧版MultipartBuilder需要手动指定MIME类型的行为有差异,若有文件上传场景建议额外做逻辑校验。

内容的提问来源于stack exchange,提问作者Ricky V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:24:12