У меня есть проблема, я отправляю данные из моего ионного приложения, работающего на устройстве Android:
Данные отправляются из приложения на сервер
Я получаю эти данные на моем PHP-бэкэнде так:
Данные, которые я получаю в бэкэнде php от устройства Android
Эти данные отправлены и получены нормально, но у меня возникла проблема, когда я получаю те же данные с устройства ios, я получаю данные, как это:
Данные, которые я получаю в бэкэнде php с устройства ios
У вас есть какие-либо решения этой проблемы? как я могу управлять этими данными? я могу преобразовать эти данные в другой формат, чтобы использовать его?
Спасибо 🙂
РЕДАКТИРОВАТЬ:
Код в моем ионном приложении:
var camposRequeridos={IDVisita: this.reparto.IDVisita, Expedicion: this.albaranes}; //this.albaranes is an array with 1 or more objects
this.communicate.postRecogida(camposRequeridos);
Код в comunicate.ts
export class CommunicateProvider {
private defaultHeaders = {"Content-Type": "application/json"};
constructor(public http:HTTP,
private auth: AuthProvider) {
this.http.setDataSerializer('json');
}
get(URL, params, headers){
let signedHeaders = this.auth.signRequest(headers);
return this.http.get(URL, params, signedHeaders);
}
post(URL, params, headers){
let signedHeaders = this.auth.signRequest(headers);
return this.http.post(URL, params, signedHeaders);
}
postRecogida(camposRequeridos){
return this.http.post(SERVER_URL + '/Recogida', camposRequeridos, this.auth.signRequest(this.defaultHeaders));
}
}
В api-call.php в случае, если метод post:
case 'POST':
{
parse_str($var, $POST);
$_POST = array_merge((array)$_POST, (array)$POST);
break;
}
И в recogida.php я преобразую данные, если я получаю строку:
if(isset($_POST['Expedicion'])){
if(is_string($_POST['Expedicion'])){
$expediciones = json_decode($_POST['Expedicion'], true);
}else{
$expediciones = $_POST['Expedicion'];
}
}else{
$expediciones = array();
}
РЕДАКТИРОВАТЬ:
После долгих поисков я обнаружил, что это ионная ошибка или что-то в этом роде, потому что я пытаюсь собрать приложение снова в ios и на android, и проблема исчезает, но иногда появляется снова, когда я снова собираю приложение, я не знаю, почему это это происходит
Чтобы дать лучший ответ относительно того, почему это происходит (и как «исправить это»), потребуется код, который генерирует эти данные.
Еще один вопрос, относящийся к правильному ответу, заключается в том, согласуются ли данные iOS (всегда одинаковая структура).
Тем не менее, то, что можно сделать, это простое управление / очистка данных;
Создайте функцию, которая обрабатывает данные, поступающие с устройств, и обеспечивает произвольную структуру данных, которая вам нужна.
Есть несколько способов сделать это, один из них — иметь шаблон структуры данных и рекурсивно искать значения в полученных данных. это будет работать, даже если структура данных изменится, но не будет, если ключи изменятся.
Я бы посоветовал сделать некоторые исследования, прежде чем отправлять вопрос.
Других решений пока нет …