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