发起对话接口,处理http 400异常报错
- 主要语言
- Java
- 星标
- 214
- 派生
- 98
- PR 合并指标
- 30 天内没有已合并 PR
描述
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'missing': was expecting ('true', 'false' or 'null')
at [Source: missing required Host header; line: 1, column: 8]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) ~[jackson-core-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) ~[jackson-core-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2839) ~[jackson-core-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1903) ~[jackson-core-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:749) ~[jackson-core-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3850) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3799) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2858) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.coze.openapi.service.service.common.AbstractEventCallback.onResponse(AbstractEventCallback.java:43) ~[coze-api-0.1.6.jar!/:?]
at retrofit2.OkHttpCall$1.onResponse$original$uVqJCFM2(OkHttpCall.java:161) ~[retrofit-2.9.0.jar!/:?]
at retrofit2.OkHttpCall$1.onResponse$original$uVqJCFM2$accessor$2S6hJ1Vv(OkHttpCall.java) ~[retrofit-2.9.0.jar!/:?]
at retrofit2.OkHttpCall$1$auxiliary$uF9zybcp.call(Unknown Source) ~[retrofit-2.9.0.jar!/:?]
at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86) ~[skywalking-agent.jar:8.6.0]
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java) ~[retrofit-2.9.0.jar!/:?]
at okhttp3.RealCall$AsyncCall.execute$original$bM12vPzc(RealCall.java:174) ~[okhttp-3.14.6.jar!/:?]
at okhttp3.RealCall$AsyncCall.execute$original$bM12vPzc$accessor$WsNoXPUc(RealCall.java) ~[okhttp-3.14.6.jar!/:?]
at okhttp3.RealCall$AsyncCall$auxiliary$USEDluia.call(Unknown Source) ~[okhttp-3.14.6.jar!/:?]
at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86) ~[skywalking-agent.jar:8.6.0]
at okhttp3.RealCall$AsyncCall.execute(RealCall.java) ~[okhttp-3.14.6.jar!/:?]
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) ~[okhttp-3.14.6.jar!/:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_202]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_202]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]

怀疑是这里的errorStr并不是json格式,不过你们没打日志,我也不能确定,总之结果就是如果发起对话遇到了http400异常,没有返回我异常原因,而是返回我了一个jsonparse异常。希望尽快处理下吧。
贡献指南
调研方向
从 com.coze.openapi.service.service.common.AbstractEventCallback.onResponse 第 43 行开始,这里会解析响应。复现 initiate-conversation API 返回 400 响应的情况,并检查 errorStr 不是 JSON 时的处理方式。如果返回原始的 HTTP 400 错误原因,而不是 JsonParseException,则表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- api
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100