我正在使用离子/ 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: {…}}
答案 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)
});