HttpErrorResponse : 内部服务器错误

Posted

技术标签:

【中文标题】HttpErrorResponse : 内部服务器错误【英文标题】:HttpErrorResponse : internal server error 【发布时间】:2019-11-20 04:19:57 【问题描述】:

我是 angular 6 的新手。 我已经用spring boot开发了一个post服务,当我通过邮递员测试它时,它工作得很好,但是当我用网络浏览器测试它时,它给了我这个错误:

HttpErrorResponse headers: HttpHeaders, status: 500, statusText: "OK", url: "http://localhost:8080/api/test/ordermiss", ok: false, ...error: timestamp: "2019-07-10T13:35:09.083+0000 ", message: null, details: "uri=/api/test/ordermiss"details: "uri=/api/test/ordermiss"message: nulltimestamp: "2019-07-10T13:35:09.083+0000"proto: Objectheaders: HttpHeaderslazyInit: ƒ ()lazyUpdate: nullnormalizedNames: Map(0) proto: Objectmessage: "http://localhost:8080/api/test/ordermiss 的 Http 失败响应: 500 OK"name: " HttpErrorResponse"ok: falsestatus: 500statusText: "OK"url: "http://localhost:8080/api/test/ordermiss"proto: HttpResponseBaseconstructor: ƒ HttpErrorResponse(init)proto: Object

当我查看 spring 控制台时,它给出了这个警告:

2019-07-11 13:36:01.796 WARN 14404 --- [nio-8080-exec-4] .m.m.a.ExceptionHandlerExceptionResolver:已解决 [java.lang.NullPointerException]

我对另一个对象使用相同的方法,但我没有收到此错误,所以请你帮帮我

这项服务:

                constructor(private http: HttpClient)  

           SaveOM(Om: Object): Observable<Object> 
         return this.http.post(`$this.baseUrl`, Om);
           

这是 .ts :

    save() 
      this.omService.SaveOM(this.ordermission)
      .subscribe(data => console.log(data), error => console.log(error));
    this.ordermission = new Ordermission();
      

     onSubmit() 
       this.submitted = true;
          this.save();
       

类角度:

           export class Ordermission 
          id:number;
        mat:string;
         depart:string;
         dest:string;
      // etat:string;enum class
       // type:string;enum class
        // localisation:string;enum class
         datedeb:Date;
        datefin:Date;
         distance:number;
         couttranp:number;
         coutheberg:number;
       total:number;
        

控制器:

              @CrossOrigin(origins = "*", maxAge = 3600)
             @RestController
            @RequestMapping("/api/test")
              @PreAuthorize("hasRole('USER') or hasRole('ADMIN')")
          public class OrdermissionController 

  @Autowired private OrdermissionRepository ordermissionrep;

  @Autowired private OrderMissService orderMissService;


  @PostMapping("/ordermiss")
// @ExceptionHandler(RuntimeException.class)
    public Ordermission createOM(@Valid @RequestBody Ordermission OM) 
        return orderMissService.saveOM(OM);

    

服务:

                 @Service
                public class OrderMissServiceImpl implementsOrderMissService 
                 Double var;
                 Double tot;
                 long cal;
                long cout;

  @Autowired private OrdermissionRepository ordermissionrep;


@Override
public Ordermission saveOM(Ordermission om) 
        if(om.getDepart().equals(Local.tunis) && om.getDest().equals(Local.sousse) || om.getDepart().equals(Local.sousse) && om.getDest().equals(Local.tunis)) 
        var =(double) 143;
        om.setDistance(var);
    
    if(om.getDepart().equals(Local.tunis) && om.getDest().equals(Local.tabarka) || om.getDepart().equals(Local.tabarka) && om.getDest().equals(Local.tunis)) 
        var =(double) 175;
        om.setDistance(var);
    


    if(om.getDepart().equals(Local.tunis) && om.getDest().equals(Local.zaghouan) || om.getDepart().equals(Local.zaghouan) && om.getDest().equals(Local.tunis)) 
        var =(double) 57;
        om.setDistance(var);
    
    if(om.getDepart().equals(Local.tunis) && om.getDest().equals(Local.zarsis) || om.getDepart().equals(Local.zarsis) && om.getDest().equals(Local.tunis)) 
        var =(double) 544;
        om.setDistance(var);
    

      if(om.getType().equals(Typetransport.perso)) 
          cal=(long) (om.getDistance()*2*0.08);
          om.setCouttranp(cal);
      

      if(om.getType().equals(Typetransport.pubic)) 
          cal=(long) (om.getDistance()*2*0.375);
          om.setCouttranp(cal);
      

     if(om.getEtat().equals(Etat.cadre)) 
         cout=(DaysBetween(om)+1)*25;
         om.setCoutheberg(cout);
     
     if(om.getEtat().equals(Etat.non_cadre)) 
         cout=(DaysBetween(om)+1)*20;
         om.setCoutheberg(cout);
     
     else if (om.getCoutheberg() != null && om.getCouttranp()!=null) 
        tot = (double) (om.getCoutheberg()+om.getCouttranp());
        om.setTotal(tot);
    
    return  ordermissionrep.save(om);

实体:

      @Entity
    @Table(name = "ordermission")
   public class Ordermission 

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String mat;

@Enumerated(EnumType.STRING)
private Typetransport type;

@Enumerated(EnumType.STRING)
private Etat etat;

@Enumerated(EnumType.STRING)
private Local depart;

@Enumerated(EnumType.STRING)
private Local dest;
@Temporal(TemporalType.DATE)
private Date datedeb;
@Temporal(TemporalType.DATE)
private Date datefin;

private Double distance;

private Long couttranp;
private Long coutheberg;

     // @Formula("couttranp + coutheberg")
       private Double total;  

【问题讨论】:

500 是服务器错误。请检查您的服务器是否工作正常。或重新检查您发送的参数。 你好rania,分享你的控制器 我编辑它@PatelRomil(控制器和服务) 好吧,从代码中我可以看出Ordermission 中的attribute 之一似乎为空,您可以添加Request 正文 我添加了正文 @Avi,但为什么它与邮递员一起使用,当它通过 Angular 传递时,它给了我这个错误 【参考方案1】:

错误 500(内部服务器错误)有时会显示 CORS 问题。检查您的服务器是否已正确配置为接受 CORS 请求

【讨论】:

嗨 @jspassov 我对 cors 没有任何问题,因为我还有其他可以正常工作的功能

以上是关于HttpErrorResponse : 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

从服务器抛出的自定义错误未在客户端的 HttpErrorResponse 中返回

Angular|Express|Mongoose 得到 HttpErrorResponse 错误状态:404

Angular HttpErrorResponse GET 请求

404 HttpErrorResponse 由于通过ngForm从角度发送对象到springboot

Angular 6: HttpErrorResponse SyntaxError: Unexpected token s in JSON

小学角语法问题,在服务错误处理程序声明