无法读取HTTP消息:org.s.HttReadableException:无法读取文档:无法识别的标记'PUT':期待('true','false'或'null')

时间:2016-12-29 07:33:25

标签: spring rest spring-data-jpa

我正在春季STS实施SPRING数据JPA + Oracle ...它是postman的示例应用程序我得到了Get方法的响应200但是对于post和put无法从DB读取数据我猜并给出以下错误 - < / p>

  

无法读取HTTP消息:   org.springframework.http.converter.HttpMessageNotReadableException:   无法读取文档:无法识别的令牌'PUT':期待   ('true','false'或'null')在[来源:   java.io.PushbackInputStream@1f1076e7; line:1,column:5];嵌套   异常是com.fasterxml.jackson.core.JsonParseException:   无法识别的令牌'PUT':期待('true','false'或'null')   在[来源:java.io.PushbackInputStream@1f1076e7; line:1,column:5]

@Service
public class PersonService {
    @Autowired
    private PersonRepository personRepository;


    public Object findAll() {
        return personRepository.findAll();
    }

    public Person findById(Long id) {
        return personRepository.findOne(id);
    }

    public Person save(Person person) {
        return personRepository.save(person);
    }


    public Person delete(Person person) {
        personRepository.delete(person);
        return person;
    }

    public Person findByEmail(String email){ return null; }
}

控制器方法:

@RequestMapping(value = "/all", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Hashtable<String, Person> gatAll() {
    return personService.getAll();
}

@RequestMapping(value = "/update/{id}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String updateUser(@RequestBody Person person, @PathVariable long id) {
    try {
        person.setId(id);
        personService.save(person);
    } catch (Exception ex) {
        return "Error in Updating the user : " + ex.toString();
    }

    return "User successfully Updated";
}

1 个答案:

答案 0 :(得分:3)

错误可能是由于您为控制器提供的数据格式造成的。您的控制器方法需要JSON字符串。 例如,在jQuery的情况下,JSON.stringify()为您提供JSON字符串。 因此,我建议您在客户端确认这一点,以便将数据发送到此控制器。

我在处理其中一个项目时遇到过类似的错误。我的客户端是用python编写的,它应该给我发送JSON字符串。所以,我不得不使用dumps()并且它有效。