angular - 使用 Angular HttpClient 解析服务器的 Http 请求

标签 angular ionic-framework post httprequest

我试图使用解析服务器的 REST API,因此在其文档中,他们写道: 要在 Parse 上创建新对象,请将 POST 请求发送到包含该对象内容的类 URL。例如,创建上述对象:

curl -X POST \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"score":1337,"playerName":"Sean Plott","cheatMode":false}' \
https://YOUR.PARSE-SERVER.HERE/parse/classes/GameScore

我测试了它,它工作正常,所以我想通过 Angular HttpClient 使用这个方法,然后我写了这段代码:

let url = 'https://parseapi.back4app.com/classes/test';
const httpOptions = {
headers: new HttpHeaders({

  'X-Parse-Application-Id': '6mK3kDvzuLeyJojS9yRGYr6JxmuDtapGhwmUflqy',
  'X-Parse-REST-API-Key': '########################################',
  'Content-Type':  'application/json'
 })
 };
    let params = new HttpParams();
    params = params.set('score', '1337');
    params = params.append('playername', 'mohy');
    this.httpClient.post(url,params,httpOptions).subscribe(data =>{
      console.log(data);

    },err => {
      alert(err.message);
    });

}

当我使用curl时,它工作正常,但如果我使用HttpClient,我会收到此错误:https://parseapi.back4app.com/classes/test的Http失败响应: 400 错误请求

我该如何解决这个问题?

最佳答案

HttpParams object serialize to an encoded string URL-query-string (?score=1337&playername=mohy) format,and this not valid json format as mention by content-type.

let url = 'https://parseapi.back4app.com/classes/test';
const httpOptions = {
 headers: new HttpHeaders({
   'X-Parse-Application-Id': '6mK3kDvzuLeyJojS9yRGYr6JxmuDtapGhwmUflqy',
   'X-Parse-REST-API-Key': '########################################',
   'Content-Type':  'application/json'
  })
 };

let body = {
  score: '1337',
  playername: 'mohy'
 }

this.httpClient.post(url,JSON.stringify(body),httpOptions).subscribe(data =>{
   console.log(data);
 },err => {
      alert(err.message);
 });
}

如果您想使用get方法并将参数作为URL-query-string传递

 let params = new HttpParams();
    params = params.set('score', '1337');
    params = params.append('playername', 'mohy');

    this.httpClient.get(url,{params},httpOptions).subscribe(data =>{
      console.log(data);
    },err => {
      alert(err.message);
    });

关于angular - 使用 Angular HttpClient 解析服务器的 Http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51484989/

相关文章:

javascript - 等待代码完成 Ionic 生命周期

php - Android Kotlin Volley Post String具有多个变量

angular - agm-map 动态显示/更新标记不起作用

html - 将 div 放置在不同宽度的图像内

android - Meteor android apk 显示空白屏幕

php - 是否可以从 HTML 表单(复选框)发布多个 "values"?

python - 如何使用 Python 发布到 Google Measurement 协议(protocol)?

javascript - 打印对象数组

json - Angular - 将 HAL 转换为 JSON

javascript - 在弹出窗口中使用 $scope (AngularJS + Ionic)