Witam
Proszę o pomoc w obsłudze SOAP napisanego w PHP : http://panel.bps-paczka.pl/api/api.php?wsdl
Nie bardzo wiem jak się do tego dobrać.
Mam taki początek :
SoapActionsService s = new SoapActionsService();
Object x = s.Wersja();
ale jak ze zmiennej x wyciągnąć dane ??
Może ktoś robił jakąś integracje z takim kurierem ??
Bardzo proszę o pomoc.
- trzeba się dostać do jakiegoś opisu tego API
- trzeba znaleźć jak tam wygląda typ
WersjaOut
i na tej podstawie wyciągać dane
Np. dla wersji może to wyglądać tak:
var kurier = new kurierpbs.SoapActionsService();
var w = (System.Xml.XmlNode[])kurier.Wersja(); //1
var wersja = w.Where(n => n.Name.ToLower().Equals("item")).FirstOrDefault(); //2
if (wersja != null)
{
Console.WriteLine(wersja.SelectSingleNode("value").InnerText); //3
}
-
Wersja()
zwraca tablice obiektów, które tak naprawdę są typuXmlNode
, tu są to dwa obiekty - wyszukujemy w tablicy pozycji, której nazwa to
item
, tu jest to drugi obiekt (ale czy zawsze tak będzie) - jednym z dzieci znalezionej node w pkt 2 powinno być takie, które się nazywa
value
i w nim siedzi wersja
Tak można wyciągać dane "na ślepo" po prostu patrząc co zwraca dana metoda. O ile z prostymi metodami, gdzie te dane są stałe nie ma problemu o tyle problem będzie z takimi metodami, które zwracają różne dane. Oczywiście problemu by nie było gdybyś miał opis do tego co zwraca dana metoda.
mam opis
to jest przykład struktury jaka trzeba przesłać, tylko jak to ma wyglądać w c# ??
2.1 Struktura login:
Parametr: Typ: Wymagane: Opis:
bpsid string Tak Numer klienta w systemie BPS
klucz string Tak Klucz API otrzymany od BPS
Przykład:
$parametry['login']['bpsid'] = 'Numer klienta w systemie BPS';
$parametry['login']['klucz'] = 'klucz API';
3.3 Saldo:
Wynikiem działania metody jest tablica zawierająca aktualną informacje o stanie
finansów klienta w PLN. W tej metodzie wymagane jest użycie struktury
autoryzacyjnej.
3.3.1 Parametry wejściowe:
Nazwa pola: Typ: Wymagane: Opis:
login array Tak Struktura login (pkt 2.1)
Przykład:
$parametry['login']['bpsid'] = '00001';
$parametry['login']['klucz'] = '00002';
3.3.2 Wywołanie:
$client->Saldo($parametry);
3.3.3 Dane wyjściowe:
Parametr: Opis:
finanse Tablica zawierająca informacje o stanie finansów na koncie
klienta lub informacje o błędzie.
Definicje w danych wyjściow y c h :
saldo: Stan finansów na koncie klienta w PLN.
kredyt: Maksymalny kredyt przyznany klientowi w PLN.
srodki: Stan środków dostępnych na kolejne operacje w PLN.
Przykład A :
$wynik['finanse']['saldo'] = -5112.23;
$wynik['finanse']['kredyt'] = 10000.00;
$wynik['finanse']['srodki'] = 4887.77;
w C# należy sobie wygerewować z WSDL-a kod interfejsowy, i używać C# type-safe.
Jak masz SOAP to masz WSDL-a (tydzień temu był wątek), bliźnięta-bracia - kogo bardziej matka-historia ceni *) ?
*) kto starszy, zrozumie ;)
zaimportuj sobie to WSDL i zobacz co z tego wyjdzie.