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

Android Retrofit多部分请求执行无响应问题排查求助

问题排查建议

结合你提供的代码和现象,请求停滞无响应的可能原因如下:

  • 主线程调用同步网络请求:你使用的client.newCall(request).execute()是OkHttp的同步执行方法,如果在Android主线程调用,会触发ANR(应用无响应),程序会被系统挂起。Android严格禁止在主线程执行网络操作,必须切换到子线程,或者改用异步方法enqueue()回调处理结果。

  • 文件参数异常:

    1. 代码中图片参数名是productImage,但Retrofit接口定义的是personImage,参数名不匹配会导致服务器无法正确解析请求,可能长时间等待有效参数而超时。
    2. 你使用的文件路径/C:/Nazir/eclipseprojects/images/15224.jpeg是Windows本地路径,Android设备不存在该路径,文件对象file可能为空或无法读取,导致请求构建或发送时卡住。需替换为Android设备可访问的文件路径(如外部存储的Environment.getExternalStorageDirectory()路径或应用内部存储路径),并确保文件存在、拥有读取权限。
  • 缺少OkHttp日志拦截器:Logcat没有OkHttp日志是因为你未配置HttpLoggingInterceptor,无法查看请求头、请求体、响应状态等关键信息,难以定位问题。需要给OkHttpClient添加该拦截器:

    val loggingInterceptor = HttpLoggingInterceptor().apply {
        level = HttpLoggingInterceptor.Level.BODY
    }
    val client = OkHttpClient.Builder()
        .addInterceptor(loggingInterceptor)
        .build()
    
  • 序列化或权限问题:

    1. Gson().toJson(personFull)可能因为PersonFull存在循环引用、未序列化字段等问题,导致序列化过程卡住,进而阻塞请求发送。可单独测试该序列化语句是否能快速生成正常JSON字符串。
    2. Android 10及以上版本需申请READ_EXTERNAL_STORAGE权限(或使用媒体访问框架),如果未申请权限,读取文件时会被阻塞或抛出异常,导致请求停滞。

内容的提问来源于stack exchange,提问作者Nazir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:07:40