Bonjour,
j'ai une erreur avec @requestbody, quand je consomme mon api j'ai cette erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
2020-04-29 18:36:05.335  WARN 9116 --- [nio-8181-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported]
Il y a quelque jours javais réussi à ne pas avoir cette erreur mais à force de modifier mon code et de m'occuper d'autre partie du code , je me retrouve avec ce message.
Ce message je l'ai lorsque je fait la requête avec ARC REST.

voici le @restcontroller:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
  @PostMapping("/newAuth")
  public ResponseEntity<Test> newAuth(@RequestBody Test newAuth) throws Exception {
    if (AuthServiceIntf.trouvemail(newAuth.getmail()) == null) {
      AuthServiceIntf.saveAuth(newAuth);
 
      return new ResponseEntity<Test>(newAuth, HttpStatus.OK);
    }
 
    return new ResponseEntity<Test>(newAuth, HttpStatus.CONFLICT);
  }
Lorsque j'utilise Angular pour consommer cette requête j'ai une erreur 403 forbidden.
Quant je change mon entité class "Test" par String, je n'ai plus cette erreur.
Quelle est le problème ? c'est la réception de la requête qui est encodé en UTF8 et que spring n'arrive pas à le déchiffrer ?
Mon entité <TEST> est encodé en UTF8 ?.

j'ai un autre controller:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
  @PostMapping("/authWbs")
  public ResponseEntity<Panier> payer(@RequestBody Panier keyConsentement) throws Exception {
    System.out.println(keyConsentement + "===========");
    return new ResponseEntity<Panier>(keyConsentement, HttpStatus.OK);
 
  }
voici mon entité:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
 
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Panier implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String amount;
 
    /*
    private Integer qte;
 
    private String produit;*/
 
}
Quant je consomme le service avec ARC REST, j'ai n'ai pas cette erreur d'utf8 (avec le même type application/json)??

voici à quoi ressemble mon entite

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
 
import java.io.Serializable;
import java.util.Collection;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
 
import lombok.ToString;
services.UtileIntf;
 
@Entity @ToString
public class Test implements Serializable {
    @Id
    @GeneratedValue
    private Long id;
    @Column(unique=true)
    private String courriel;
    private String password;
    @OneToMany(mappedBy = "Test")
    private Collection<Inscrit> Tests;
 
    public Long getId() {
        return this.id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getcourriel() {
        return this.courriel;
    }
 
    public void setcourriel(String courriel) {
        this.courriel = courriel;
    }
 
    public String getpassword() {
        return this.password;
    }
 
    public void setpassword(String password) {
        this.password = password;
    }
 
    public String getValidKey() {
        return this.validKey;
    }
 
    public void setValidKey(String validKey) {
        this.validKey = validKey;
    }
 
    public Collection<Inscrit> getTests() {
        return this.Tests;
    }
 
    public void setTests(Collection<Inscrit> Tests) {
        this.Tests = Tests;
    }
 
 
    public Test() {
        super();
    }
 
    public Test(String courriel, String password) {
        super();
        this.courriel = courriel;
        this.password =  UtileIntf.encodepassword(password);
    }
Je ne comprend pas pourquoi en utilisant panier je n'ai pas d'erreur de @RequestBody , pour être encore plus sur j' 'ai remplacé mon entité <TEST> par le panier et je n'a plus d'erreur d'UTF8.

Pour les controller doit-je tous récupérer les éléments sous forme de string , et "d'hydrater" mes entité avec des set pour éviter l'erreur UTF8

Si vous avez une idée ? merci de vos réponses.