Spring-Boot 4.0.5下使用HttpExchange获取JSON数据,遇到特殊字符无法处理,如何调整配置呢?直接搜索千问、deepseek的就别回复了吧
tools.jackson.core.exc.StreamReadException: Illegal character ((CTRL-CHAR, code 21)): only regular white space (\r, \n, \t) is allowed between tokens
详细异常信息如下:
Error while extracting response for type [com.kyle.ai.tender.sites.Gdydb2bInviteService$QueryResult] and content type [application/json;charset=UTF-8]
org.springframework.web.client.RestClientException: Error while extracting response for type [com.kyle.ai.tender.sites.Gdydb2bInviteService$QueryResult] and content type [application/json;charset=UTF-8]
at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:274)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:928)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.lambda$body$1(DefaultRestClient.java:844)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:617)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchange(DefaultRestClient.java:572)
at org.springframework.web.client.RestClient$RequestHeadersSpec.exchange(RestClient.java:747)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.executeAndExtract(DefaultRestClient.java:921)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.body(DefaultRestClient.java:844)
at org.springframework.web.client.support.RestClientAdapter.exchangeForBody(RestClientAdapter.java:76)
at org.springframework.web.service.invoker.HttpServiceMethod$ExchangeResponseFunction.lambda$create$4(HttpServiceMethod.java:448)
at org.springframework.web.service.invoker.HttpServiceMethod$ExchangeResponseFunction.execute(HttpServiceMethod.java:401)
at org.springframework.web.service.invoker.HttpServiceMethod.invoke(HttpServiceMethod.java:136)
at org.springframework.web.service.invoker.HttpServiceProxyFactory$HttpServiceMethodInterceptor.invoke(HttpServiceProxyFactory.java:300)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222)
at jdk.proxy3/jdk.proxy3.$Proxy168.listPageData(Unknown Source)
at com.kyle.ai.tender.sites.Gdydb2bInviteService.fetchOpportunities(Gdydb2bInviteService.java:46)
at java.base/java.lang.reflect.Proxy.invokeDefault(Proxy.java:1345)
at java.base/java.lang.reflect.InvocationHandler.invokeDefault(InvocationHandler.java:264)
at org.springframework.web.service.invoker.HttpServiceProxyFactory$HttpServiceMethodInterceptor.invoke(HttpServiceProxyFactory.java:305)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222)
at jdk.proxy3/jdk.proxy3.$Proxy168.fetchOpportunities(Unknown Source)
at com.kyle.ai.tender.service.ScheduledTasks.fetchingRemoteData(ScheduledTasks.java:77)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:128)
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$1(ScheduledMethodRunnable.java:122)
at io.micrometer.observation.Observation.observe(Observation.java:569)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:122)
at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:88)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Illegal character ((CTRL-CHAR, code 21)): only regular white space (\r, \n, \t) is allowed between tokens
at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)
at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)
at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:246)
... 37 common frames omitted
Caused by: tools.jackson.core.exc.StreamReadException: Illegal character ((CTRL-CHAR, code 21)): only regular white space (\r, \n, \t) is allowed between tokens
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 1]
at tools.jackson.core.JsonParser._constructReadException(JsonParser.java:1856)
at tools.jackson.core.base.ParserMinimalBase._reportInvalidSpace(ParserMinimalBase.java:1033)
at tools.jackson.core.json.UTF8StreamJsonParser._skipWSOrEnd(UTF8StreamJsonParser.java:3646)
at tools.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:724)
at tools.jackson.databind.ObjectReader._initForReading(ObjectReader.java:300)
at tools.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1875)
at tools.jackson.databind.ObjectReader.readValue(ObjectReader.java:1270)
at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:352)
... 39 common frames omitted