Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 400使用RestTemplete和postForObject的错误请求_Spring_Spring Mvc_Resttemplate - Fatal编程技术网

Spring 400使用RestTemplete和postForObject的错误请求

Spring 400使用RestTemplete和postForObject的错误请求,spring,spring-mvc,resttemplate,Spring,Spring Mvc,Resttemplate,我正在使用Spring3构建两个应用程序。第一个是RESTAPI,第二个是客户端。客户端必须创建保留。我收到400个错误请求,请帮助 客户端应用程序中的课程预订: package ma.ensias.agencecentrale.entities; import java.io.Serializable; import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.En

我正在使用Spring3构建两个应用程序。第一个是RESTAPI,第二个是客户端。客户端必须创建保留。我收到400个错误请求,请帮助

客户端应用程序中的课程预订:

package ma.ensias.agencecentrale.entities;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown=true)
@Entity
@Table(name="reservations")
public class Reservation implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long idReservation;
    private String date;
    @ManyToOne
    @JoinColumn(name="id_utilisateur")
    private Utilisateur utilisateur;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="passager_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_passager")) 
    private Collection<Passager> passagers;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="vol_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_vol"))
    private Collection<Vol> vols;
    // Contructor without fields 
    public Reservation() {
        super();
    }
    // contructor with date attribute 
    public Reservation(String date) {
        super();
        this.date = date;
    }

    // ----------------------- Getters and setters-------------------------------
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    @JsonProperty(value="client")
    public Utilisateur getUtilisateur() {
        return utilisateur;
    }

    public void setUtilisateur(Utilisateur utilisateur) {
        this.utilisateur = utilisateur;
    }
    public Collection<Vol> getVols() {
        return vols;
    }
    public void setVols(Collection<Vol> vols) {
        this.vols = vols;
    }
    public Long getIdReservation() {
        return idReservation;
    }

}
package ma.ensias.agencevoyage.entities;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown=true)
@Entity
@Table(name="reservations")
public class Reservation implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long idReservation;
    private String date;
    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="id_client")
    private Client client;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="passager_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_passager")) 
    private Collection<Passager> passagers;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="vol_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_vol"))
    private Collection<Vol> vols;
    // Contructor without fields 
    public Reservation() {
        super();
    }
    // contructor with date attribute 
    public Reservation(String date) {
        super();
        this.date = date;
    }

    // ----------------------- Getters and setters-------------------------------
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public Client getClient() {
        return client;
    }
    public void setClient(Client client) {
        this.client = client;
    }
    public Collection<Passager> getPassagers() {
        return passagers;
    }
    public void setPassagers(Collection<Passager> passagers) {
        this.passagers = passagers;
    }
    public Collection<Vol> getVols() {
        return vols;
    }
    public void setVols(Collection<Vol> vols) {
        this.vols = vols;
    }


}
和提供商应用程序中的课程预订:

package ma.ensias.agencecentrale.entities;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown=true)
@Entity
@Table(name="reservations")
public class Reservation implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long idReservation;
    private String date;
    @ManyToOne
    @JoinColumn(name="id_utilisateur")
    private Utilisateur utilisateur;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="passager_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_passager")) 
    private Collection<Passager> passagers;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="vol_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_vol"))
    private Collection<Vol> vols;
    // Contructor without fields 
    public Reservation() {
        super();
    }
    // contructor with date attribute 
    public Reservation(String date) {
        super();
        this.date = date;
    }

    // ----------------------- Getters and setters-------------------------------
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    @JsonProperty(value="client")
    public Utilisateur getUtilisateur() {
        return utilisateur;
    }

    public void setUtilisateur(Utilisateur utilisateur) {
        this.utilisateur = utilisateur;
    }
    public Collection<Vol> getVols() {
        return vols;
    }
    public void setVols(Collection<Vol> vols) {
        this.vols = vols;
    }
    public Long getIdReservation() {
        return idReservation;
    }

}
package ma.ensias.agencevoyage.entities;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown=true)
@Entity
@Table(name="reservations")
public class Reservation implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long idReservation;
    private String date;
    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="id_client")
    private Client client;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="passager_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_passager")) 
    private Collection<Passager> passagers;
    @JsonIgnore
    @ManyToMany(cascade=CascadeType.ALL)  
    @JoinTable(name="vol_reservation", joinColumns=@JoinColumn(name="id_reservation"), inverseJoinColumns=@JoinColumn(name="id_vol"))
    private Collection<Vol> vols;
    // Contructor without fields 
    public Reservation() {
        super();
    }
    // contructor with date attribute 
    public Reservation(String date) {
        super();
        this.date = date;
    }

    // ----------------------- Getters and setters-------------------------------
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public Client getClient() {
        return client;
    }
    public void setClient(Client client) {
        this.client = client;
    }
    public Collection<Passager> getPassagers() {
        return passagers;
    }
    public void setPassagers(Collection<Passager> passagers) {
        this.passagers = passagers;
    }
    public Collection<Vol> getVols() {
        return vols;
    }
    public void setVols(Collection<Vol> vols) {
        this.vols = vols;
    }


}

根本原因:提供程序控制器中设置的内容类型存在问题:

@RequestMapping(value = "/ajouterReservation", method = RequestMethod.POST, consumes="application/json")
    public ResponseEntity<String> ajouterReservation(@RequestBody Reservation reservation)

根本原因:提供程序控制器中设置的内容类型存在问题:

@RequestMapping(value = "/ajouterReservation", method = RequestMethod.POST, consumes="application/json")
    public ResponseEntity<String> ajouterReservation(@RequestBody Reservation reservation)

尝试删除提供者中的consume=“application/json”,或者在创建rest callI之前设置content type header,但我已经尝试过了,没有consume=“application/json”和设置header,但是我得到了相同的错误,然后是时候分析保留实例了,用输入请求体更新答案。另外,请尝试删除@RequestBody,并检查rest cal是否已成功创建,以标识提供程序中的根用户,或者在创建rest CALI之前,先设置内容类型头,而不使用consume=“application/json”和设置标题,但我得到相同的错误,然后是时候分析保留实例了,用输入请求主体更新答案。同时尝试删除@RequestBody并检查rest cal是否成功识别根原因第二种解决方案解决了我的问题,但我仍然不知道为什么。将“consumes=”application/json“添加到handler methode是否与使用httpheader时所做的相同?第二个解决方案解决了我的问题,但我仍然不知道为什么。将“consumes=”application/json“添加到handler methode是否与使用HttpHeaders所做的相同
     RestTemplate restTemplate = new RestTemplate();
     HttpHeaders headers=new HttpHeaders();
        headers.set("Content-Type", "application/json");
    HttpEntity requestEntity=new HttpEntity(reservation, headers);

       Reservation addedRes = restTemplate.exchange(REST_SERVICE_URI, HttpMethod.POST,requestEntity,Reservation.class);