将数据发送到服务器时出错415

时间:2018-02-06 19:54:32

标签: json cordova http

我正在使用离子/ cordova构建一个应用程序,它将进行扫描,将其存储到设备(此部分可用),并将此数据上传到服务器(此部分不起作用)。

服务器是一个RESTful api,它希望JSON被POST(我没有创建服务器,这些是我给出的详细信息)。

当我尝试发布到服务器时,我收到以下错误 -

{status: 415, url: "http://jsfitnessservice.azurewebsites.net/api/values123", headers: {…}, error: ""} error:""
headers:
content-length:"0"
date:"Tue, 06 Feb 2018 19:41:36 GMT"
request-context:"appId=cid-v1:bf5436d9-7e1e-491e-b79d-d40d9b401307"
server:"Kestrel"
x-android-received-millis:"1517946100312"
x-android-response-source:"NETWORK 415"
x-android-selected-protocol:"http/1.1"
x-android-sent-millis:"1517946100070"
x-powered-by:"ASP.NET"

我的代码 -

let httpData = {
      "id": this.device.uuid,
      "scanDateTimes": this.lastScans,
      "appVersion": "Version 1.0"
      }

    let header = new Headers();
    header.append('Content-Type', 'application/json; charset=utf-8');

    this.http.post('http://jsfitnessservice.azurewebsites.net/api/values 123', httpData, header).then 
    (data =>{
      console.log("Data Status - ", data.status);
    }).catch(error =>{
      console.log("Error  - ", error)
    });

我尝试了一些我在网上看过的东西,例如将标题添加到对象,或者在我发送的数据周围使用JSON.Stringify()。但这些也给出了错误。

围绕数据的JSON.stringify会出现此错误 -

status: -1, error: "unsupported params type, needs to be a JSON object"

将标题设为对象会出现此错误 -

status: 0, error: "advanced-http: header values must be strings",   headers: {…}}

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用

this.http.setDataSerializer(‘json’)
this.http.post('http://jsfitnessservice.azurewebsites.net/api/values 123', httpData, {'Content-Type': 'application/json; charset=utf-8'}).then 
(data =>{
  console.log("Data Status - ", data.status);
}).catch(error =>{
  console.log("Error  - ", error)
});