2012-02-21 5 views
3

나는 실행중인 웹 서비스 (JPA 공급자로 EclipseLink 사용)를 가지고 있으며 SOAP를 사용하여 PHP에서 데이터베이스의 데이터를 업데이트하는 메소드를 호출하려고합니다. 웹 서비스에서

방법이 같은 보일 수 있습니다 : PHP에서SOAP을 사용하여 PHP에서 Java 웹 서비스로 객체를 보내는 방법은 무엇입니까?

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(); 
} 

을, 나는 형 stdClass의 객체를 생성하고 사람에 대한 매개 변수로 보내야 할 것 같아요. 내가 맞습니까? (사람

나는 이것이 자바 PHP에서 개체를 보낼 수있는 올바른 방법 있는지 알고하지는
$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); 

가 (물론,이 방법 updatePerson를 호출하지만하지는는 이러한 코드 라인 일 수 p) 자바 응용 프로그램에서,하지만 p는 내가 PHP에서 입력 한 데이터가 포함되어 있지 않습니다.

+0

WSDL을 보여줄 수 있습니까? 또한 'SoapClient' 생성자에서''classmap' '옵션을 사용하는 예제 [here] (http://www.php.net/manual/en/soapclient.soapclient.php)를 확인하고 싶을 수도 있습니다. –

답변

3

가능한 경우 우리에게 WSDL 파일을 보여주십시오.

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

$client->updatePerson($obj); 

그리고이를 보내야 : 나는 PHP에서 SoapClient 작업 할 때 웹 서비스는 객체 기대 때문에, 대신에 다음과 같은 배열을 전송하려고 새로운 stdClass을 만드는 경우에도

보통 내가 배열을 사용 필요한 데이터가있는 개체.

희망이 있습니다.

+0

나는 며칠 전에 일하게했다. 하지만 stdClass 유형의 객체 대신 배열을 보낼 수 없습니다. :-) 고마워요! – Rox

관련 문제