org.springframework.web.client.UnknownContentTypeException:无法提取响应:找不到适合responsetype的HttpMessageConverter
温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class java.lang.Integer] and content type [text/plain;charset=UTF-8]
Im getting above error for below method in QuestionController Service Class
QuizController.java
@RestController
@RequestMapping("quiz")
public class QuizController {
@Autowired
QuizService quizservice;
// Create quiz for admin
@PostMapping("createquiz")
public Object createQuiz(@RequestBody QuizDto quizDto)
{
return quizservice.createQuiz(quizDto);
}
// Get questions from given quiz Id for users
@GetMapping("getquestions/{quizId}")
public Object getQuestionsFromQuizIds(@PathVariable Integer quizId)
{
return quizservice.getQuestionsFromQuizId(quizId);
}
// Calculaet score of user as per user's response-
@PostMapping("claculateScore")
public Object claculateScore(@RequestBody List<Response> responses)
{
return quizservice.claculateScore(responses);
}
@PostMapping("getScore")
public Object getScoreForUsers(@RequestBody List<Response> responses)
{
return quizservice.getScoreForUsers(responses);
}
}
QuizService.java
@Service
public class QuizService {
@Autowired
QuizInterface quizInterface;
@Autowired
QuizRepo quizRepo;
public Object createQuiz(QuizDto quizDto) {
try {
if (quizDto.getTitle() != null && quizDto.getCategory() != null && quizDto.getNumOfQues() != null) {
Quiz quiz = new Quiz();
quiz.setTitlel(quizDto.getTitle());
List<Integer> questionIds = quizInterface.findQuestionIdsForUsers(quizDto.getCategory(),
quizDto.getNumOfQues());
quiz.setQuestionIds(questionIds);
quizRepo.save(quiz);
return new ResponseEntity<>("Quiz Saved in DB successfully...", HttpStatus.OK);
} else {
return new ResponseEntity<>("title, category or numOfQuestions is never passed in request...",
HttpStatus.BAD_REQUEST);
}
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
// This function is dependent on both quiz and question DB
public Object getQuestionsFromQuizId(Integer quizId) {
System.out.println("Reaching quiz service.....................................******************&&&&&&&&&&&&&&&&&&&&&&&");
try {
Optional<Quiz> quiz_optional = quizRepo.findById(quizId);
if(!quiz_optional.isPresent())
return new ResponseEntity<>("Requested quizId is not present in DB", HttpStatus.BAD_REQUEST);
Quiz quiz = quiz_optional.get();
System.out.println(quiz.toString()); /////////////////////////////****************************************************** */
List<Integer> questionIds = quiz.getQuestionIds();
System.out.println("Before interface............................******************&&&&&&&&&&&&&&&&&&&&&&&");
List<QuestionOnly> questionsFromQuestionIdsforUsers = quizInterface
.findQuestionsFromQuestionIds(questionIds);
System.out.println(questionsFromQuestionIdsforUsers.toString()); /////////////////////////////****************************************************** */
return new ResponseEntity<>(questionsFromQuestionIdsforUsers, HttpStatus.OK);
}
catch (Exception e) {
return new ResponseEntity<>("Couldn't create questions"+e.getMessage(),HttpStatus.BAD_REQUEST);
}
}
public Object claculateScore(List<Response> responses) {
System.out.println(
"Reaching calculate score..................score.................score.score.................score.score.................score.score.................score");
System.out.println("Here its in quiz service " + quizInterface.claculateScore(responses));
return quizInterface.claculateScore(responses);
}
public Object getScoreForUsers(List<Response> responses) {
Object score = quizInterface.getScoreForUsers(responses);
return score;
}
}
QuizInterface
@FeignClient("QUESTION-SERVICE")
public interface QuizInterface {
@GetMapping("question/createQuestionsForUsers")
public List<Integer> findQuestionIdsForUsers(@RequestParam String category, @RequestParam Integer numOfQues); // Here the function declaration should be like just how its present in QuestionService.
@PostMapping("question/getQuestionsFromquestionIds")
public List<QuestionOnly> findQuestionsFromQuestionIds(@RequestBody List<Integer> questionIds);
@PostMapping("question/claculateScore")
public Object claculateScore(@RequestBody List<Response> responses);
@PostMapping("question/getScore")
public Object getScoreForUsers(@RequestBody List<Response> responses);
}
QuestionController
@RestController
@RequestMapping("question")
public class QuestionController {
@Autowired
QuestionService questionService;
// Create
@PostMapping("addAllQuestions")
public Object addAllQuestions(@RequestBody List<Question> questions)
{
return questionService.addAllQuestions(questions);
}
//Read
@GetMapping("viewAllQuestions")
public Object viewAllQuestions()
{
return questionService.viewAllQuestions();
}
// Update
@PutMapping("updateQuestion")
public Object updateQuestions(@RequestBody Question question)
{
return questionService.updateQuestions(question);
}
// Delete
@DeleteMapping("deleteQuestion")
public Object deleteQuestion(@RequestParam Integer id)
{
return questionService.deleteQuestion(id);
}
// Methods for quiz -
@GetMapping("createQuestionsForUsers")
public List<Integer> findQuestionIdsForUsers(@RequestParam String category,@RequestParam Integer numOfQues)
{
return questionService.findQuestionIdsForUsers(category, numOfQues);
}
@PostMapping("getQuestionsFromquestionIds")
public Object findQuestionsFromQuestionIds(@RequestBody List<Integer> questionIds) {
System.out.println("Reaching question controller..........");
return questionService.findQuestionsFromQuestionIds(questionIds);
}
@PostMapping("claculateScore")
public Object claculateScore(@RequestBody List<Response> responses)
{
System.out.println(
"reaching claculate score questionoo9oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo");////////////////////////////=====================================
System.out.println("Hereit is - " + questionService.claculateScore(responses));
return questionService.claculateScore(responses);
}
@PostMapping("getScore")
public Object getScoreForUsers(@RequestBody List<Response> responses)
{
return questionService.getScoreForUsers(responses);
}
}
QuestionService
@Service
public class QuestionService {
@Autowired
QuestionRepo questionRepo;
public Object addAllQuestions(List<Question> questions) {
if(!questions.isEmpty())
{
questionRepo.saveAll(questions);
return new ResponseEntity<>(questions.size()+" questions added to DB", HttpStatus.OK);
}
else
{
return new ResponseEntity<>("No questions found for adding to DB....", HttpStatus.BAD_REQUEST);
}
}
public Object viewAllQuestions() {
try {
List<Question> questions = questionRepo.findAll();
if (questions.isEmpty()) {
return new ResponseEntity<>("Cannot find any question to view inside DB...", HttpStatus.BAD_REQUEST);
}
else
return new ResponseEntity<>(questions, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(e.getMessage(),HttpStatus.BAD_REQUEST);
}
}
public Object updateQuestions(Question question) {
try {
Optional<Question> questionToBeUpdated_optional = questionRepo.findById(question.getId()); // This statement will throw an exception here.
if(questionToBeUpdated_optional.isPresent())
{
Question updatedQuestion = new Question(question.getId(), question.getQuestionTitle(),
question.getOption1(), question.getOption2(), question.getOption3(), question.getOption4(),
question.getRightAnswer(), question.getDifficultylevel(), question.getCategory());
questionRepo.save(updatedQuestion);
return new ResponseEntity<>("Updated question is - "+ questionRepo.findById(question.getId()).toString(), HttpStatus.OK);
}
else
{
return new ResponseEntity<>("Question to be updated is not present in DB", HttpStatus.BAD_REQUEST);
}
} catch (Exception e) {
return new ResponseEntity<>("Please provide a question with ID.",HttpStatus.BAD_REQUEST);
}
}
public Object deleteQuestion(Integer id) {
try {
Integer idToBeDeleted = id;
if (questionRepo.existsById(id))
questionRepo.deleteById(idToBeDeleted); // deleteById will not throw exception even if idToBeDeleted is null.
else
return new ResponseEntity<>("Question with provided id is not present in DB", HttpStatus.BAD_REQUEST);
return new ResponseEntity<>("Question Deleted SuccessFully....", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>("Please enter a question Id which need to be deleted...",
HttpStatus.BAD_REQUEST);
}
}
// Methods used in Quiz interface -
public List<Integer> findQuestionIdsForUsers(String category, Integer numOfQues) {
return questionRepo.findQuestionIdsForUsers(category, numOfQues);
}
// public List<QuestionOnly> findQuestionsFromQuestionIds(List<Integer> questionIds) {
// System.out.println("Reaching question service..........");
// List<QuestionOnly> questionsForUsers = new ArrayList<>();
// for(Integer questionId : questionIds)
// {
// Question questionForQuestionId = questionRepo.findById(questionId).get();
// questionsForUsers.add(new QuestionOnly(questionForQuestionId.getId(), questionForQuestionId.getQuestionTitle(),
// questionForQuestionId.getOption1(), questionForQuestionId.getOption2(),
// questionForQuestionId.getOption3(), questionForQuestionId.getOption4()));
// }
// return questionsForUsers;
// }
public Object findQuestionsFromQuestionIds(List<Integer> questionIds) {
System.out.println("Reaching question service..........");
List<QuestionOnly> questionsForUsers = new ArrayList<>();
for(Integer questionId : questionIds)
{
Question questionForQuestionId = questionRepo.findById(questionId).get();
questionsForUsers.add(new QuestionOnly(questionForQuestionId.getId(), questionForQuestionId.getQuestionTitle(),
questionForQuestionId.getOption1(), questionForQuestionId.getOption2(),
questionForQuestionId.getOption3(), questionForQuestionId.getOption4()));
}
return new ResponseEntity<>(questionsForUsers.toString(),HttpStatus.OK);
}
public Object claculateScore(List<Response> responses) {
System.out.println("Reaching claculateScore questionService......................^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&&&&&&&&&&&&&&&&&&********************************(((((((((((((((())))))))))))))))");
try {
if (responses.isEmpty())
{
System.out.println("Testing......................^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&&&&&&&&&&&&&&&&&&********************************(((((((((((((((())))))))))))))))");
return new ResponseEntity<>("please choose any answer and submit..", HttpStatus.BAD_REQUEST);
}
Integer score = 0;
for (Response response : responses) {
String rightAnswer = questionRepo.findById(response.getId()).get().getRightAnswer();
if (response.getChosenAnswer().equals(rightAnswer))
score++;
}
String res = "Your score is - ";
return new ResponseEntity<>(res, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public Object getScoreForUsers(List<Response> responses)
{
try {
if (!responses.isEmpty()) {
Integer score = 0;
for(Response r:responses)
{
Optional<Question> questionOptional = questionRepo.findById(r.getId());
if (questionOptional.isPresent()) {
Question question = questionOptional.get();
if (question.getRightAnswer().equals(r.getChosenAnswer()))
score++;
}
else {
throw new NullPointerException("Question with requested ID - " + r.getId() + " is not present in DB");
}
}
return new ResponseEntity<>(score, HttpStatus.OK); // -This line is working
// return new ResponseEntity<>("Your score is = "+score, HttpStatus.OK); // But this line is not working - here I am getting - " no suitable HttpMessageConverter found for response type" error why is that?
} else {
return new ResponseEntity<>("No options selected....",HttpStatus.BAD_REQUEST);
}
}
catch (Exception e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
}
}
正文到此结束
- 本文标签: 家庭宠物
- 本文链接: https://www.coder6.net/article/2296
- 版权声明: 本文由蚂蚁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权