hej,
mam webservice napisany w apache-cxf. Wywolywac go musze po str php'a. Problem jest nastepujacy - metoda webservice'u przyjmuje obiekt typu bean :
  1. public int addTest(TestBean testBean) {
  2. System.out.println(testBean.getName());
  3. System.out.println(testBean.getId());
  4. System.out.println(testBean.getDate());
  5.  
  6. return 1;
  7.  
  8. }
  9.  


po str php'a uzywalm nusoap. Utworzylam obiekt odpowiadajacy temu testBean :

  1. $test = new TestBeanPhp();
  2. $test->setId(1);
  3. $test->setName('misty');
  4. $test->setDate('2011-01-10');


i webservice wywoluje w nastepujacy sposob:
  1. $params = array(
  2. 'test' => $test
  3. );
  4. $this->soapClient->call($endpoint, $params, $namespace);


wyglada ok - poza jedna rzecza - obiekt ktory przychodzi po stronie javy jest pusty! Nie wiem za bardzo po ktorej str jest problem. Czy ktos z Was umialby mi poradzic co jest nie tak?

pzdr,
misty

udalo mi sie rozwiazac problem smile.gif Przedstawiam rozwiazanie, jakby ktos kiedys uzwayl nusoap i apache-cxf:

w tym przykladzie metoda webservice przyjmuje String i obiekt:

  1.  
  2. public void test(String s, TestBean b){
  3. System.out.println("test "+s);
  4. System.out.println("test "+b.getNumber());
  5. System.out.println("test "+b.getPostalCode());
  6.  
  7. }


a oto jak powinien wygladac kod w php przy uzyciu nusoap:

  1.  
  2. $soapClient = new nusoap_client($endpoint);
  3. $soapClient->soap_defencoding = 'UTF-8';
  4. $soapClient->decode_utf8 = false;
  5.  
  6.  
  7. $params = array(
  8. 'arg0' => 'marta',
  9. 'arg1' => array(
  10. 'number' => '123'
  11. 'postalCode' => 'abc'
  12. )
  13. );
  14.  
  15. $response = $soapClient->call('test', $params, $namespace);


i jest ok smile.gif czyli nazwy ida 'arg0', 'arg1' itd.. a odpowiednik obiektu to kolejna tablica.. mam nadz ze komus sie przyda!

pzdr,

misty