Я пытаюсь выполнить HTTP-вызов, и мой Content-Type - это текст / план, но я работаю с ionic-native / http, которые принимают только объект и массив, вот что я пробовал
Ошибка: расширенный-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.info(val)}).
catch(e=>{console.info(e)})
}
Не следует писать Content-Type как 'text/plain', а не как plan, если это тот тип, который вам нужен.
все же я получаю ту же ошибку
Я изменил его на простой, но все равно получаю ту же ошибку @Geshode
вы устанавливаете сериализатор на 'json, и я предполагаю, что ваш body не может быть преобразован в json, поскольку это не массив. вы пробовали поменять сериализатор на вариант utf8? или просто создать простой массив, чтобы включить ваше тело и передать его httpNative?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предположение: Используемый HTTP-плагин - Кордова-плагин-расширенный-http, ссылка на него содержится в Ionic Docs.
Если API, которому вы отправляете данные, может их обрабатывать, установите для сериализатора данных значение "utf8".
this.httpNative.setDataSerializer( "utf8" );
Это говорит плагину ожидать текста.
Измените тело на объект перед вызовом POST.
body = JSON.parse(json);
Строка, которую вы передаете JSON.parse(), должна быть допустимым json.
Обновлено: удалены ссылки на ошибку, которая теперь исправлена.
Если вы используете cordova-plugin-advanced-http, вы также можете сделать следующее, если хотите установить тип контента только для одного запроса.
const options: any = {
serializer: 'utf8',
method: 'post',
data: 'my string value'
};
this.http.sendRequest('https://mysite', options);
Если ваш тип ответа - json, я рекомендую проанализировать его самостоятельно с помощью JSON.parse.
Я получал ту же ошибку, и я попробовал решение @Glen Davies, но ошибка сохранялась и периодически возникала. Иногда это работало, иногда нет.
Error: advanced-http: "data" argument supports only following data types: Array, Object
Я использую приложение Ionic 3 с плагином cordova http в http-interceptor, и через несколько часов я обнаружил, что проблема заключалась в том, что даже при установке сериализатора в app.component.ts он не работал.
Решением было перемещение:
this.http.setSSLCertMode('pinned');
this.http.setDataSerializer('utf8');
К конструктору внутри HttpInterceptor.
После этого ошибка исчезла.
Что произойдет, если вы закомментируете эту строку =>
this.httpNative.setDataSerializer( "json" );?