Когда я пытаюсь получить массив объектов на стороне клиента Android Я получаю эту ошибку:Исключение при попытке отправить массив с помощью PHP веб-сервиса
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG (empty) <br>@1:7 in [email protected])
Я читал некоторые из ответов здесь для этой задачи и они говорят, потому что параметры, такие как пространство имен или команда url или soap, были неправильными. Это не тот случай.
Я пытаюсь создать веб-службу PHP с помощью nusoap и вызвать один из методов. Метод должен возвращать массив:
function GetAllWorkerUsers($id,$Password)
{
$ret_array=array();
$person=new Person(12, 11, 11, "First", "Last", true, "12345", 0);
array_push($ret_array, $person->GetWsdlObj());
return $ret_array;
}
Person класс:
class WorkerUser
{
public $id;
public $id2;
public $id3;
public $name1;
public $name2;
public $somebool;
public $name3;
public $id4;
function __construct($id, $id2, $id3, $name1, $name2, $somebool, $name3, $id4)
{
$this->id = $id;
$this->id2= $id2;
$this->id3= $id3;
$this->name1= $name1;
$this->name2= $name2;
$this->somebool= $somebool;
$this->name3= $name3;
$this->id4= $id4;
}
function GetWsdlObj()
{
$obj['id']= $this->id;
$obj['id2']=$this->id2;
$obj['id3']=$this->id3;
$obj['name1']=$this->name1;
$obj['name2']= $this->name2;
$obj['somebool']=$this->somebool;
$obj['name3']=$this->name3;
$obj['id4']=$this->id4;
return $obj;
}
}
проблема возникает при попытке вернуть массив с этим человеком объектом внутри. Когда я это делаю, я получаю на стороне клиента исключение выше. Если я пытаюсь вернуть null, он работает без исключения. Если я пытаюсь вернуть массив без нажатия объекта person внутри, я получаю пустой массив без каких-либо исключений. Я попытался изменить метод, чтобы возвращать только объект типа Person
не в массив, и он также работает. Только при попытке вернуть массив с объектом внутри я получаю исключение. Вы, наверное, понимаете, почему?
Итак, вы получаете исключение * после * вы возвращаете массив или когда вы инициализируете объект? Можете ли вы var_dump '$ person' и' $ ret_array'? – vanamerongen
Похоже, что вы передаете пробел/
перед объектом. (заметьте, это просто быстрый взгляд). Посмотрите, можете ли вы получить вывод, который вы отправляете в браузере, и проверить источник. Возможно, у вас есть пробел/новая строка в вашем скрипте получения php, который заменяется на
или что-то подобное. – Joeblade
@vanamerongen исключение происходит после того, как я возвращаю массив. Нет никакой проблемы с инициализацией массива или в создании объекта или при нажатии объекта на массив (проверял его на стороне сервера с помощью try catch). –