Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php i nuSoap - problem z webserwisem
Forum PHP.pl > Forum > PHP
Brolin
witam,
piszę webserwis i wszystko jest ok dopóki nie muszę do niego przesłać więcej niż dwóch argumentów bo server nie chce ich wtedy odebrać. Jeden argument to zwykły string, drugi to tablica, którą serwer odbiera jako zdefiniowany w nim typ strukturalny.

definicja struktury dla nuSoap
  1. <?php
  2. $server->wsdl->addComplexType
  3. (
  4. 'ogloszenie',
  5. 'complexType',
  6.  'struct',
  7. 'all',
  8. '',
  9. (
  10. 'ma_name' => array('name' => 'ma_name', 'type' => 'xsd:string'),
  11. 'ma_city' => array('name' => 'ma_city', 'type' => 'xsd:string'),
  12. 'ma_mail' => array('name' => 'ma_mail', 'type' => 'xsd:string')
  13. )
  14. );
  15. ?>


rejestracja metody wygląda tak:

  1. <?php
  2. $server->register('doExport',
  3. array('klucz' => 'xsd:string', 'ogloszenie' => 'tns:ogloszenie'),  //input  
  4. array('return' => 'xsd:string'), //output
  5. 'rpc',
  6. 'encoded',
  7. 'Exporting ads to PolskaGielda'
  8. );
  9. ?>


a jej wywołanie:

  1. <?php
  2. function doExport($klucz, $ogloszenie)
  3. {
  4. .....
  5. }
  6. ?>


jak sądzę coś jest nie tak przy odebraniu tych zmiennych we funkcji ale nie mogę dojść co. O dziwo jeśli atrybut ogloszenie potraktowałbym jako wynik działania serwera, wtedy funkcja zadziała ale zwrócić wynik do klienta mogę już tylko w postaci jak struktura ogloszenie.

to działa ale tak nie powinno być:
  1. <?php
  2. $server->register('doExport',
  3. array('klucz' => 'xsd:string'), //input
  4.  array('ogloszenie' => 'tns:ogloszenie') //output
  5. array('return' => 'xsd:string'),  //to już nie jest brane pod uwage...
  6. 'rpc',
  7. 'encoded',
  8. 'Exporting ads to PolskaGielda'
  9. );
  10. ?>


jakieś sugestie?questionmark.gif
splatch
Jeśli możesz, pokaż wygenerowany WSDL. Być może błąd tkwi właśnie w nim.
siemakuba
Jeżeli ten kod który pokazałeś w ostatnim przykładzie skopiowałeś ze swojego skryptu (w sensie, nie zaszła pomyłka przy wklepywaniu na forum) to linia oznaczająca output powinna być zakończona przecinkiem.

pozdr.
Brolin
splatch co dokładnie z tego WSDLa potrzebujesz? Całości raczej nie skopiuję winksmiley.jpg

siemakuba, ten przecinek... nie, nie chodzi o niego - pomyliłem się przy pisaniu tutaj smile.gif

edit:
chodzi mi dokładnie o ten moment poniżej - czy w ten sposób przesyła się kilka argumentów na raz do webserwisu bo nigdzie na internecie nie znalazłem jak to robić i czy potem tak się do nich odwołuje jak we funkcji:

  1. <?php
  2. array('klucz' => 'xsd:string', 'ogloszenie' => 'tns:ogloszenie'),  //input  
  3. array('return' => 'xsd:string'),  //output
  4.  
  5. function doExport($klucz, $ogloszenie) //odwolanie
  6. ?>


a to dokumentacja metody jaką generuje serwer (umieszczam w znacznikach php, żeby było lepiej widać):

  1. <?php
  2. Name: doExport
  3. Binding: Przesylanie danychBinding
  4. Endpoint: tajne :D
  5. SoapAction: encoded
  6. Style: Exporting ads to PolskaGielda
  7. Input:
  8. use: encoded
  9. namespace: rpc
  10. encodingStyle: <a href="http://schemas.xmlsoap.org/soap/encoding/" target="_blank">http://schemas.xmlsoap.org/soap/encoding/</a>
  11. message: doExportRequest
  12. parts:
  13. klucz: xsd:string
  14. ogloszenie: tns:ogloszenie
  15. Output:
  16. use: encoded
  17. namespace: rpc
  18. encodingStyle: <a href="http://schemas.xmlsoap.org/soap/encoding/" target="_blank">http://schemas.xmlsoap.org/soap/encoding/</a>
  19. message: doExportResponse
  20. parts:
  21. return: xsd:string
  22. Namespace: rpc
  23. Transport: <a href="http://schemas.xmlsoap.org/soap/http" target="_blank">http://schemas.xmlsoap.org/soap/http</a>
  24. Documentation:
  25. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.