HttpParams发布了Angular 4,糟糕的参数

时间:2017-11-06 05:20:43

标签: angular

我不明白为什么,而且我无法在任何地方找到答案。

当我想在http请求中使用params时,我遇到了这个问题。

identificationClientMAil(phone: string, mail: string) : Observable <any>{
    let params = new HttpParams().append('phone', phone).append('mail', mail);

    return this.http.get('http://localhost:8000/Programme/extranet-api/public', { headers: this.headers, params: params })
    .map(res => res.json())
    .catch(err => {
       throw 'error in source. Details: ' + err;
     });
  }

我的网址看起来像这样:

  

http://localhost:8000/Programme/extranet-api/public?updates=%7B%22param%22:%22phone%22,%22value%22:%22ddddddd%22,%22op%22:%22a%22%7D&updates=%7B%22param%22:%22mail%22,%22value%22:%22%22,%22op%22:%22a%22%7D&cloneFrom=%7B%22updates%22:null,%22cloneFrom%22:null,%22encoder%22:%7B%7D,%22map%22:null%7D&encoder=%7B%7D&map=null

我的问题在哪里?

2 个答案:

答案 0 :(得分:1)

您需要使用URLSearchParams

let params = new URLSearchParams();
urlSearchParams.append('phone', phone);
urlSearchParams.append('mail', mail);
return this.http.get('http://localhost:8000/Programme/extranet-api/public?' + urlSearchParams.toString(), { headers: this.headers })
.map(res => res.json());
.catch(err => {
   throw 'error in source. Details: ' + err;
 });

答案 1 :(得分:1)

你有什么问题?它也可能是服务器问题(资源或其他方式的路径不正确)。无论如何,Dhyey使用URLSearchParams提出了一个很好的建议,尽管让http.get处理params转换(就像你在代码中一样)是个更好的主意,如:

return this.http.get('http://localhost:8000/Programme/extranet-api/public', 
      { headers: this.headers, search: myUrlSearchParams })...;