【问题标题】:Content type 'application/json;charset=UTF-8'内容类型 'application/json;charset=UTF-8'
【发布时间】:2020-03-20 08:03:23
【问题描述】:

您好,当我使用邮递员发送帖子请求时,谁能帮我解决这个错误,这是我的控制器

package com.example.rba.controller;

import java.util.Date;
import java.util.List;
import java.util.Objects;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.apache.commons.lang.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.rba.model.Booking;
import com.example.rba.model.LoginResponse;
import com.example.rba.model.Room;
import com.example.rba.model.User;
import com.example.rba.repository.BookingRepository;
import com.example.rba.repository.RoomRepository;
import com.example.rba.repository.UserRepository;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

@RestController
@RequestMapping("/api")
public class Controller {

    @Autowired
    BookingRepository bookingRepository;
    @Autowired
    RoomRepository roomRepository;
    @Autowired
    private JavaMailSender sender;
    @Autowired
    UserRepository userRepository;

    public String generatedString = RandomStringUtils.randomAlphabetic(10);

    @GetMapping("/read")
    public List<Booking> read() {
        return bookingRepository.findAll();
    }

    @GetMapping("/rooms")
    public List<Room> room(){
        return roomRepository.findAll();
    }

    @PostMapping(path = "/createBooking/{location}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, 
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<String> create(@PathVariable(value = "location") String location,
            @Validated @RequestBody Booking book) {
        book.setStatus("reserved");
        book.setBookingCode(generatedString);

        bookingRepository.save(book);

        MimeMessage message = sender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message);
        StringBuilder sb = new StringBuilder();

        try {
            String[] array = new String[book.getAtt().size()];
            int index = array.length;
            for (Object value : book.getAtt()) {
                array[index] = (String) value;
            }
            helper.setTo(array[index]);
            sb.append("Agenda:" + " " + book.getBookingDesc()).append(System.lineSeparator());
            sb.append("When:" +  " " + book.getDateBooked() + " " + book.getStartTime() + " " + "To" + " " + book.getEndTime())
                    .append(System.lineSeparator());
            sb.append("Where:" + " " + location).append(System.lineSeparator());
            sb.append("By:" + " " + book.getBookedUser()).append(System.lineSeparator());
            sb.append("Booking code:" + " " + generatedString);
            helper.setText(sb.toString());
            helper.setSubject("Meeting");
        } catch (MessagingException e) {
            e.printStackTrace();
            return new ResponseEntity<>("Error while sending mail ..", HttpStatus.BAD_REQUEST);
        }
        sender.send(message);

        return new ResponseEntity<>("Inputs have been saved", HttpStatus.OK);
    }

    @PutMapping("/editEquip/{id}")
    public ResponseEntity<Room> edit(@PathVariable(value = "id") Long id, @Validated @RequestBody Room room) {
        Room editRoom = roomRepository.getOne(id);

        if (Objects.isNull(editRoom)) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }

        editRoom.setEquip(room.getEquip());

        Room newEquip = roomRepository.save(editRoom);
        return new ResponseEntity<>(newEquip, HttpStatus.OK);
    }

    @GetMapping("/getEquip")
    public List<Room> readEquip() {
        return roomRepository.findAll();
    }

    @PostMapping("/login")
    public ResponseEntity<LoginResponse> login(@Validated @RequestBody User user){
        String jwtToken = "";
        String username = user.getName();
        String password = user.getPassword();

        LoginResponse response = new LoginResponse();
        if(user.getName() == null && user.getPassword() == null || user.getName() != username && user.getPassword() != password) {
            return new ResponseEntity<>(response, HttpStatus.UNAUTHORIZED);
        }

        List<User> reg = 
                userRepository.findByNameAndPassword(username, password);

        jwtToken = Jwts.builder().setSubject(username).claim("info", user)
                .setIssuedAt(new Date()).signWith(SignatureAlgorithm.HS256, "secretKey")
                .compact();

        if(Objects.isNull(reg) || reg.isEmpty()) {
            response.setStatus(false);
            response.setMessage(username + " " + "doesn't exist");
            return new ResponseEntity<>(response, HttpStatus.UNAUTHORIZED);
        }
        else {
            response.setStatus(true);
            response.setMessage("Welcome");
            response.setToken(jwtToken);
        }

        return new ResponseEntity<>(response, HttpStatus.ACCEPTED);
    }

    @PostMapping("/register")
    private ResponseEntity<String> register(@Validated @RequestBody User user) {

        user.setPassword(generatedString);

        MimeMessage message = sender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message);
        StringBuilder sb = new StringBuilder();

        try {
            helper.setTo(user.getName());
            sb.append("Password:" + " " + user.getPassword());
            helper.setText(sb.toString());
            helper.setSubject("Registeration");
        } catch (MessagingException e) {
            e.printStackTrace();
            return new ResponseEntity<>("Error while sending mail ..", HttpStatus.BAD_REQUEST);
        }
        sender.send(message);

        userRepository.save(user);
        return new ResponseEntity<>("Registered Successfully, Please check your email for your password", HttpStatus.CREATED);
    }

}

这就是我使用邮递员发送 json 的方式

我收到此错误尝试搜索如何修复它,但错误仍然存​​在

"trace": "org.springframework.web.HttpMediaTypeNotSupportedException: 内容类型 'application/json;charset=UTF-8' 不支持
在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:225)
在 org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)

已编辑:这是邮递员的标题

提前致谢

【问题讨论】:

  • 很难从图片中读取,最好用stacktrace替换图片
  • 哦,好吧,对不起
  • 您使用的是@Controller@RestController
  • @RestController

标签: java spring-boot


【解决方案1】:

问题解决了我在我的一个模型类中删除了@JsonManagedReference 并且它有效,但该类与我正在使用的类无关我想知道为什么

【讨论】:

    【解决方案2】:

    添加此标签 @PostMapping(path = "/createBooking/{location}", 产生 = MediaType.APPLICATION_JSON_UTF8_VALUE, 消耗 = MediaType.APPLICATION_JSON_UTF8_VALUE)

    【讨论】:

    • 您好,尝试了这个,结果出现错误提示“此行有多个标记 - APPLICATION_JSON_UTF8_VALUE 无法解析或不是字段”。
    • 你应该导入 org.springframework.http.MediaType;
    • 哎呀,我输入了错误的错误,但它仍然没有修复错误仍然返回 415
    • 为什么要添加produces = MediaType.APPLICATION_JSON_UTF8_VALUE,因为 OP 的方法会生成一个纯字符串
    猜你喜欢
    • 2013-05-09
    • 2018-07-24
    • 2015-11-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2019-10-09
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多