[SOAP] Prosty przykład. Kod Rails nie działa, kod php działa

Witam wszystkich,

Problem jest następujący. Muszę zrobić interfejs pod SOAP i niektórych parametrów mi nie chwyta. Połączenie z SOAP działa. Zwraca wyniki, nie może zwrócić wyników jeżeli podaje parametry zagnieżdżone (przykład niżej).

Ogólnie chodzi o wyszukiwarkę produktów. Jeżeli podaje parametry w następujący sposób:

driver = SOAP::WSDLDriverFactory.new(WSDL_LINK).create_rpc_driver response = driver.getProducts(:authenticate => {:system_key =>soap_password, :system_login =>soap_login}, :params => {:discount => 'y',:results_limit=>1.to_i,:results_page=>1.to_i})
Zwraca wyniki bardzo dobrze. Jeżeli natomiast dodam parametr :products, który to ma w sobie tablicę parametrów typu {:name=>@nazwa,:id=>@id,:code=>@kod} to już za żadne skarby mi to nie działa. Jest odpowiedź od serwera - zwraca pusty wynik.

Mam kod php, który działa i zwraca wyniki z parametrem :products. wygląda tak:

// tablica parametrow wywolania bramki api $request = array( 'getProducts' => array( // dane do uwierzytelnienia 'authenticate' => array( 'system_key' => sha1(date('Ymd') . sha1(PANEL_PASS)), // klucz wygenerowany na podstawie hasla i daty 'system_login' => PANEL_LOGIN // login uzytkownika do panelu sklepu ), // tablica parametrow 'params' => array ( // tablica ustawien konfiguracyjnych wywolania bramki 'settings' => array ( 'modification_type' => 'edit' ), 'products' => array( array ( 'id' => 1152189279// identyfikator produktu ) ) ) ) );
Kod RoR, który wyników nie zwraca:

driver = SOAP::WSDLDriverFactory.new(WSDL_LINK).create_rpc_driver response = driver.getProducts(:authenticate => {:system_key =>soap_password, :system_login =>soap_login}, :params => {:results_limit=>1.to_i,:results_page=>1.to_i,:products=>{:name=>'Kolimator typu ET 551'}})
Proszę zerknijcie na kod php i rubiego. Czy czegoś nie zauważyłem? Pole :settings nie zmienia wyników zapytania.

pozdrawiam

Przed wywołaniem metody SOAP dodaj

driver.wiredump_dev = STDOUT

Zobaczysz wtedy na standardowym wyjściu jaki XML jest przesyłany i będziesz mógł to porównać z tym co PHP wypluwa. To powinno dać wskazówki co dalej.

Na GH jest parę ciekawych projektów Ruby SOAP, może będziesz miał więcej szczęścia z http://github.com/rubiii/savon lub http://github.com/unwire/handsoap.