我正在尝试进行HTTP调用,但是我的Content-Type是text / plan,但是我正在使用ionic-native / http进行操作,该操作只使用对象和数组,这是我尝试过的
错误:Advanced-http:“数据”参数仅支持以下数据类型:数组,对象
TestIR(item){
let headers = { 'Content-Type': 'text/plain'};
let sender ='sendir,1:1,0,';
let code = item.keys[10].code;
let body = sender+code;
let url= "http://10.75.0.120/v2/CI00e0148a";
this.httpNative.setDataSerializer( "json" );
this.httpNative.post(url,body,headers).then(val=>
{console.log(val)}).
catch(e=>{console.log(e)})
}
答案 0 :(得分:3)
假设:所使用的HTTP插件是cordova-plugin-advanced-http,从Ionic Docs链接。
如果您要发送数据的API可以处理它,请将数据序列化器设置为"utf8"
。
this.httpNative.setDataSerializer( "utf8" );
这告诉插件期望输入文本。
在调用POST之前将主体更改为对象。
body = JSON.parse(json);
您传递给JSON.parse()
的字符串必须是有效的json。
编辑:删除了对现已修复的错误的引用
答案 1 :(得分:0)
如果您使用的是cordova-plugin-advanced-http
,并且只想为一个请求设置内容类型,也可以执行以下操作。
const options: any = {
serializer: 'utf8',
method: 'post',
data: 'my string value'
};
this.http.sendRequest('https://mysite', options);
如果您的响应类型为json
,建议您使用JSON.parse
自己解析。
答案 2 :(得分:0)
我收到相同的错误,我尝试了@Glen Davies解决方案,但错误仍然存在并且断断续续。 有时它曾经有用,有时却没有。
Update()
我在SetDestination()
中使用了带有cordova http插件的Ionic 3应用程序,几个小时后,我发现问题是即使在Error: advanced-http: "data" argument supports only following data types: Array, Object
中设置了序列化程序,不起作用。
解决方案正在移动:
http-interceptor
转到app.component.ts
内部的构造函数。
此后,错误消失了。