Как отправить объект из PHP в веб-сервис Java с помощью SOAP? - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть работающий веб-сервис (использующий EclipseLink в качестве поставщика JPA), и я хотел бы вызвать методы, которые обновляют данные в базе данных из PHP с использованием SOAP.

Метод в веб-сервисе может выглядеть примерно так:

public void updatePerson(Person p){
   EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersonLib");
   EntityManager em = emf.createEntityManager();
   if(!em.getTransaction().isActive()) {
      em.getTransaction().begin();
   }
   em.merge(p);
   em.getTransaction().commit();
}

Из PHP, я думаю, мне нужно создать объект типа stdClass и отправить его в качестве параметра для Person. Я прав? Но я не могу работать с этими строками кода:

$client = new SoapClient("url.to.wsdl", array("trace" => 1));
$obj = new stdClass();
$obj->Person = new stdClass(); 
$obj->Person->personId = 1;
$obj->Person->name = "Peter";
$client->updatePerson($obj);

Я не знаю, является ли это правильным способом отправки объекта из PHP в Java (ну, он вызывает метод updatePerson (Person p) в приложении Java, но p не содержит данных, которые я ввел в PHP).

1 Ответ

3 голосов
/ 29 февраля 2012

если возможно, пожалуйста, покажите нам файл WSDL.

Обычно, когда я работаю с SoapClient в PHP, я использую массивы, даже если веб-служба ожидает объект, поэтому вместо создания нового stdClass попробуйте отправитьследующий массив:

$client = new SoapClient("url.to.wsdl");
$obj    = new array("personId" => 1, "name" => "Peter");

$client->updatePerson($obj);

И это должно отправить объект с необходимыми данными.

Надеюсь, это поможет.

...