2017-08-08 89 views
0

這是我的客戶端代碼org.springframework.http.converter.HttpMessageNotReadableException在呼籲休息後調用

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

這是我的休息控制器代碼:

@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 parse error: Unrecognized token 'Success': was expecting ('true', 'false' or 'null'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'Success': was expecting ('true', 'false' or 'null') at [Source: [email protected]; line: 1, column: 15] at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:244) at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:229) at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:96) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:655) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:613) at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:380) at com.mmx.ta2s3.serviceImpl.Ta2S3ServiceImpl.callRestService(Ta2S3ServiceImpl.java:170) at com.mmx.ta2s3.Ta2S3Application.task(Ta2S3Application.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) at com.mmx.ta2s3.Ta2S3Application.main(Ta2S3Application.java:38) Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'Success': was expecting ('true', 'false' or 'null') at [Source: [email protected]; line: 1, column: 15] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3528) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2686) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:878) at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:772) at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3834) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3783) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2922) at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:241) ... 31 more

回答

0

試試這個:

@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); 
} 
+0

結果仍然相同! – masSdev

+0

試試這個'return new ResponseEntity <>(「true」,HttpStatus.OK);' –

+0

以下錯誤:JSON解析錯誤:無法構建org.springframework.http.ResponseEntity的實例:無布爾值/布爾參數構造函數/工廠從布爾值反序列化的方法(true);嵌套異常是com.fasterxml.jackson.databind.JsonMappingException:無法構建org.springframework.http.ResponseEntity的實例:無布爾值/布爾參數構造函數/工廠方法從布爾值反序列化(true) – masSdev

0

我不知道,但我認爲它不能將「成功」字符串ResponseEntity,使用字符串通用類型代替:

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