簡體   English   中英

org.springframework.http.converter.HttpMessageNotReadableException在調用rest post調用時

[英]org.springframework.http.converter.HttpMessageNotReadableException While calling rest post call

這是我的客戶端代碼

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity responseEntity = restTemplate.postForObject(appConfig.getRestUrl(),processFiles, ResponseEntity.class);

這是我的Rest控制器代碼:

@RequestMapping(value = "/v1/processfiles/", method = RequestMethod.POST)
public ResponseEntity addProcessFiles(@RequestBody List<ProcessFiles> processFiles) {
    try {
        processFilesDao.save(processFiles);
        return ResponseEntity.status(HttpStatus.OK).body("Success");
    } catch (Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failure occured at server side");
    }

如果我在調用后使用String.class作為返回類型,則可以使用相同的代碼,但不能與Response實體類一起使用。 如果我也需要客戶同樣的響應實體,我在做什么錯

org.springframework.http.converter.HttpMessageNotReadableException:JSON解析錯誤:無法識別的令牌“成功”:正在等待(“ true”,“ false”或“ null”); 嵌套的異常是com.fasterxml.jackson.core.JsonParseException:無法識別的標記'Success':在[Source:java.io.PushbackInputStream@15778da9;中期望('true','false'或'null') 第1行,第15列],位於org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:229)org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:244)在org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:96)在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:655)在org.springframework.web.client.RestTemplate.execute (org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:380)的com.mmx.ta2s3.serviceImpl.Ta2S3ServiceImpl.callRestService(Ta2S3ServiceImpl.java:170)的(RestTemplate.java:613)。 ta2s3.Ta2S3Application.task(Ta2S3Application.java:48)位於sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)位於sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)位於sun.reflect.DelegatingMethodAccessorImpl.invokeD 在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor $ LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)在org.springframework處的java.lang.reflect.Method.invoke(Method.java:498)處的elegatingMethodAccessorImpl.java:43) .beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor $ LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)位於org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostframeor.postProcessBeforeInstrialization(In org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)上的.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409) org.springframework.beans.factory.support。 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)在org.springframework.beans.factory。 org.springframework.context.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java :)處的support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 867)在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)在org 在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)的org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)在org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)上的org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)com.mmx.ta2s3.Ta2S3Application.main(Ta2S3Application.java:38)由以下原因引起:com.fasterxml.jackson.core.JsonParseException:無法識別的令牌“成功”:在[來源:java.io.PushbackInputStream@15778da9;處期望('true','false'或'null'); 第1行,第15列],位於com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558)com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702)位於com.fasterxml.com的.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3528)位於com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2686) com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:878)位於com.fasterxml.jackson.databind.ObjectMapper._init。 )的com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3783)的com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2922)的org.springframework.http.converter.json的)。 AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConve rter.java:241)...還有31

嘗試這個:

@RequestMapping(value = "/v1/processfiles/", method = RequestMethod.POST)
public ResponseEntity addProcessFiles(@RequestBody List<ProcessFiles> processFiles) {
try {
    processFilesDao.save(processFiles);
    return new ResponseEntity<>("Success", HttpStatus.OK);
} catch (Exception e) {
    return new ResponseEntity<>("Failure occured at server side", HttpStatus.INTERNAL_SERVER_ERROR);
}

我不確定,但我認為它無法將“成功”字符串轉換為ResponseEntity,請改用字符串通用類型:

@RequestMapping(value = "/v1/processfiles/", method = RequestMethod.POST)
public ResponseEntity<String> addProcessFiles(@RequestBody List<ProcessFiles> processFiles) {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM