代码之家  ›  专栏  ›  技术社区  ›  Thom

角柱未按预期提供请求正文

  •  0
  • Thom  · 技术社区  · 8 年前

    我的第一个独角应用。。。

    我正在尝试发布到我的全新web服务,并使用以下代码:

      headers = new HttpHeaders(
        {'Content-Type':'text/plain'}
      );
      loginUrl = "http://localhost:8093/login";
    
      login(credentials): Observable<String> {
        const body = new HttpParams()
          .set('payload', 'testing...');
    
        let bodyValue = body.toString()
        return this.http.post<String>(this.loginUrl, body,{headers: this.headers})
      }
    

    我的spring boot应用程序引发了一个异常,因为在获取post时,请求中缺少有效负载参数。

    我在firefox浏览器中打开了web developer网络面板,并显示以下视图:

    enter image description here

    起初,我认为这是我的spring方面的错误配置,但我运行了一个卷曲:

      curl --data "payload=testing" http://localhost:8093/login
    

    这很好地进入了我的web服务。所以Angular对我的参数进行编码的方式有一些问题。

    我找到此页面: https://github.com/angular/angular/issues/19535 ,但不确定是否相关。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Michael Kang    8 年前

    第二个参数为 http.post 是内容正文。您可以通过以下方式传递URL参数:

    const urlParams = new HttpParams()
      .set('payload', 'testing...');
    
     return this.http.post<String>(`${this.loginUrl}?${urlParams}`, '',{headers: this.headers});
    

    如果要将url参数传递到正文中,则:

      login(credentials): Observable<String> {
        const body = new HttpParams()
          .set('payload', 'testing...');
    
        let bodyValue = body.toString()
        return this.http.post<String>(this.loginUrl, bodyValue,{headers: this.headers})
      }