因为返回消息的对象不正确,导致有下面的异常:
15:22:28.669 [task-5] DEBUG c.o.w.o.a.i.o.i.WeChatErrorInterceptor - WeChat Response String - {"errcode":0,"errmsg":"ok"}
15:22:28.672 [task-5] ERROR o.s.a.i.SimpleAsyncUncaughtExceptionHandler - Unexpected exception occurred invoking async method: public void com.northtecom.visatrack.api.service.impl.ChatGPTService.processChatGPTContent(java.lang.String)
java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "errcode" (class com.ossez.wechat.common.model.WeChatAccessToken), not marked as ignorable (2 known properties: "expires_in", "access_token"])
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 13] (through reference chain: com.ossez.wechat.common.model.WeChatAccessToken["errcode"])
at io.reactivex.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:46)
at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:93)
at io.reactivex.Single.blockingGet(Single.java:2870)
at com.ossez.wechat.oa.api.impl.okhttp.WeChatMsgService.sendMessage(WeChatMsgService.java:65)
at com.northtecom.visatrack.api.service.impl.WeChatService.sendMessage(WeChatService.java:209)
at com.northtecom.visatrack.api.service.impl.ChatGPTService.processChatGPTContent(ChatGPTService.java:94)
at com.northtecom.visatrack.api.service.impl.ChatGPTService$$FastClassBySpringCGLIB$$86883789.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "errcode" (class com.ossez.wechat.common.model.WeChatAccessToken), not marked as ignorable (2 known properties: "expires_in", "access_token"])
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 13] (through reference chain: com.ossez.wechat.common.model.WeChatAccessToken["errcode"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1127)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2036)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1700)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1678)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:320)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2051)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1459)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:33)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)
at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:46)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:35)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(Observ
问题和解决
重新定义 WeChatStatus 对象来处理微信消息发送时候的状态返回。
上面是微信官方网站上提供的返回信息,我们的对象需要和上面的返回信息对应。
修改后的日志能解决这个状态的问题。
Comments