komunikacja php -> java poprzez webservice

0

hej,
mam webservice napisany w apache-cxf. Wywolywac go musze po str php'a. Problem jest nastepujacy - metoda webservice'u przyjmuje obiekt typu bean :

   public int addTest(TestBean testBean) {
   System.out.println(testBean.getName());
 System.out.println(testBean.getId());
 System.out.println(testBean.getDate());

return 1;
 
   }
 

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

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

i webservice wywoluje w nastepujacy sposob:

 
$params = array(
  'test' => $test
);
  $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

0
misty napisał(a)

wyglada ok - poza jedna rzecza - obiekt ktory przychodzi po stronie javy jest pusty! Nie wiem za bardzo po ktorej str jest problem.

No właśnie, czyli wcale nie wiesz, czy problem jest po stronie PHP, czy jawy: czy źle wysyłasz, czy źle sprawdzasz to co odbierasz. Zapewne (bo chyba nie używałem) istnieje w cxf sposób, żeby mieć dostęp do całego xml'a, który przychodzi z żądaniem. Plan B jest taki, żeby wysłać żądanie na adres, który ci to wypisze (spreparowany serwlet lub skrypt PHP). Jak już będziesz mógł ustalić co tak naprawdę wysyłasz, to być może okaże się, że musisz podzielić się swoim problemem na innym forum (chyba webmastering... ).

0

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

w tym przykladzie metoda webservice przyjmuje String i obiekt:

 

   public void test(String s, TestBean b){
      System.out.println("test "+s);
       System.out.println("test "+b.getNumber());
       System.out.println("test "+b.getPostalCode());

   }

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

 
      $soapClient = new nusoap_client($endpoint);
      $soapClient->soap_defencoding = 'UTF-8';
      $soapClient->decode_utf8 = false;


      $params = array(
          'arg0' => 'misty',
          'arg1' => array(
              'number' => '123'
            'postalCode' => 'abc'
          )
      );

    $response =   $soapClient->call('test', $params, $namespace);

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

pzdr i dzieki za sugestie!

     misty

1 użytkowników online, w tym zalogowanych: 0, gości: 1