Kyle-soft 2026-03-29 21:06 采纳率: 0%
浏览 9

Spring-Boot 4.0.5下使用HttpExchange获取JSON数据,遇到特殊字符无法处理,如何调整配置呢?

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

  • 写回答

5条回答 默认 最新

  • Kyle-soft 2026-03-29 21:20
    关注

    Deepseek等搜索出来的答案都是基于Spring-Boot3.x的,Spring-Boot4的jackson已经是3以上版本了,deepseek搜出来的都是jackson2的答案

    评论

报告相同问题?

问题事件

  • 修改了问题 3月30日
  • 创建了问题 3月29日