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

Dart HTTP Patch请求始终返回500状态码,求排查原因

Dart PATCH请求返回500错误的可能原因分析

针对你提供的代码,以下是几个可能导致服务器返回500内部错误的原因:

  • 请求体JSON格式非法
    你手动拼接请求体时用了HTML实体"代替双引号,服务器收到的是{"answer_json_base64": "xxx"}这种字符串,根本不是合法的JSON结构,解析时直接报错。正确的做法应该用jsonEncode生成JSON:

    String body = jsonEncode({'answer_json_base64': answers});
    
  • ETag设置错误
    你硬编码了ETag值,而且ETag里的"同样会导致格式问题。ETag的正确格式应该是类似W/"JzE5OzE2MDEyNzU0ODExMzM3NjA1NzgxOzAwOyc=",直接用双引号即可,不需要转成HTML实体。另外,硬编码的ETag大概率和服务器当前资源的ETag不匹配,触发并发控制失败,服务器可能因此抛出内部错误。应该从之前获取资源的响应头里读取真实的ETag值,而不是写死。

  • 缺少Content-Type请求头
    发送JSON格式的请求体时,必须在headers里添加'Content-Type': 'application/json',否则服务器不知道如何解析请求体,容易引发内部处理错误。

  • URL拼接可能存在格式问题
    你的URL是${baseUri}questionnaire_instances_Ex(${modifiedQuestionnaireBlocks[i]}),如果modifiedQuestionnaireBlocks[i]是字符串类型,需要用单引号包裹(比如questionnaire_instances_Ex('123')),否则URL格式不合法,服务器无法正确识别资源路径,导致内部错误。

  • 编码流程潜在问题
    虽然代码里的编码逻辑(JSON序列化→UTF8转码→Base64编码)看起来没问题,但如果answersJson本身结构不符合服务器预期,或者Base64编码后的数据长度、格式不符合要求,服务器处理时也可能抛出内部错误。可以打印编码后的answers值,和服务器要求的格式对比验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:27:17