![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z biblioteka PEAR:SOAP w php 5 kiedy chcę przekazać jako argument zagnieżdżoną tablicę :
Biblioteka traktuje to tak :
Czyli traktuje $arguments['args'] jako array, a nie hash. Próbowałem to rozwiązać przekazując argumenty jako obiekt (z tym samym efektem). Wcześniej ta procedura śmigała na serwerze z PHP 4.3.11, po zmianie PHP na 5.2.0 zachowuje się tak jak wyżej. Udało mi się rozwiązać problem wykorzystując wbudowaną bibliotekę z PHP 5.2.0 :
-------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czy w XML Schema mapujesz odpowiednio typ? Widzę, że klientowi nie przekazujesz nawet położenia pliku WSDL. Być może to jest źródłem problemów?
-------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]() ![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
z tego co wiem to zmienne to zmienne i przez klienta SOAP w php musisz użyć obiektu SoapVar gdzie ustala sie czy to jest obiekt, tablica czy string itd. Jesli nie podasz nic i przekażesz parametr to potraktuje to jako string.
-------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@Sh4dow - Twierdzę, że przyczyną błędu jest brak pliku WSDL. Może się mylę, ale korzystając z pliku WSDL unika się wielu problemów, tym bardziej, że SOAP to nie swawolny REST a definicje typów w XSD to podstawa.
Co do problemu - w pracy wykorzystujemy zdefiniowany typ dla każdej operacji, dzięki czemu nie ma problemów z ich obsługą. Swoją drogą SOAP:Array to jest lista, żeby w PHP dostać hash trzeba dać complexType:
Listę można zrobić w bardzo prosty sposób, bez korzystania z dodatkowych przestrzeni nazw:
-------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]() ![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
splatch ja osobiscie na chwile obecna nie uzywam wsdl'a i nie mam problemow z przesylaniem tablic obiektow czy innych wartosc. Wszystko co wysylam daje jako obiekt SoapVar to ze wsdl jest pomocny przy walidacji to jedno, ale jego brak nie podejzewam zeby powodowal tyle problemow.
-------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Problem polega na tym że, jak słusznie zauważył prond, biblioteka na podstawie typu deklaruje argument jako SOAP-ENC:Array w połączeniu z SOAP-ENC:arrayType=xsd:string, co oznacza listę a nie mapę.
W rozszerzeniu z PHP5 takie dane otrzymywaliśmy w postaci obiektów klasy stdClass. -------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 13:05 |