markonix
26.01.2011, 17:34:41
Jak w temacie -
potrzebuje wspólnej bazy z pewnymi kodami i chciałbym, żeby była ona dostępna dla kilku serwisów (czasami zupełnie różne serwery).
Zastanawiam się czy nie byłoby ciekawym pomysłem napisać serwer SOAP i pobierać to za pomocą API.
O ile napisać klienta, w oparciu o dokumentacje umiem, bo jest to proste, to już o serwerach w praktyce wiem 0.
Ma ktoś jakiś link do ciekawych przykładów?
Czy to bezpieczne rozwiązanie (autoryzacja bez logowania, jedynie na podstawie jakiegoś ciągu, pinu)?
Czy ogólnie to trudne (głównie ten wsdl mnie przeraża)?
Może ktoś pisał niedawno jakiś serwer, będę wdzięczny za jakiś szkielecik, o który będę się mógł oprzeć.
wookieb
26.01.2011, 17:50:14
A zwykła baza danych nie wystarczy? Skonfigurowanie jej tak aby przyjmowała połączenia z zewnątrz.
markonix
26.01.2011, 19:37:09
No właśnie tak czy siak nie mam pojęcia jak to skonfigurować i czy na ten moment mam do takich konfiguracji prawa.
API tak czy siak kiedyś dosięgnie, a to byłby świetny trening.
W sumie nie chodzi o wspólne zasoby wyłącznie ale wspólne funkcje tj. "sprawdź czy kod x istnieje", "podaj kod", "oznacz jako".
Nie musiałbym dublować każdorazowo tych funkcji.
wookieb
27.01.2011, 09:09:00
Wtedy to faktycznie ma sens. SOAP nie byłby głupim rozwiązaniem (jest jeszcze XMLRPC).
Jeżeli mogę polecić to zrezygnuj z NUSOAP i zainteresuj się SoapServer, standardowym dla PHP
http://php.net/manual/pl/class.soapserver.phpNiestety tutoriali do niego nie znam ale jak dobrze poszukasz to coś się znajdzie.
Jedynym największym problemem jest wygenerowanie WSDL-a, którego NUSOAP ma "dość" dobrze zrobione natomiast standardowa biblioteka SOAP w ogóle takiej opcji nie ma (i słusznie).
markonix
27.01.2011, 12:33:50
W sumie zanim napisałeś to właśnie mniej więcej taką ścieżkę przeszedłem.
Najpierw nuSOAP bo miałem z nim styczność przy pewnej prezentacji.
Potem pomyślałem, że żadne API, z którego dotąd korzystałem nie korzysta z zewnętrznych bibliotek tylko z czystego SOAP.
Tak więc jakiś listing znalazłem i nawet działa.
Działa bez WSDL, czy to coś zmienia? bo jak na razie to widzę tylko plus że nikt nie podejrzy metod, które udostępniam.
Na razie też nie wiem jak zabezpieczyć bazę kodów jakby ktoś przypadkiem poznał adres api i nazwę metody.
Na razie rozwiązałem to "PINem" jako pierwszy argument każdej funkcji wymagającej autoryzacji, trochę infantylne.
wookieb
27.01.2011, 12:38:44
SOAP nie działa bez wsdl
WSDL nadal jest widoczny.
Co do zabezpieczeń to np pin może być trochę dłuższym kluczem MD5 i po problemie

Drugą opcją może być akceptowanie połączeń tylko od określonych IP, ale zabezpieczenie z md5 jest wystarczające.
markonix
27.01.2011, 12:58:28
$soap = new SoapServer
(null, array('uri' => '')); $soap -> addFunction('remoteToUpper');
$soap -> addFunction('remoteToLower');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$soap->handle();
}
To wszystko co mam w serwerze (poza funkcjami).
Działa zmienianie liter na większe, mniejsze.
W kliencie przy wsdl daje null.
Wydaje mi się, że działam na usłudze non-WSDL (mod).
wookieb
27.01.2011, 13:30:39
A to bardzo przepraszam
markonix
27.01.2011, 13:32:38
Luzik tylko zastanawiam się po co więc ten wsdl gdy daje rade i bez niego
slightyboy
27.01.2011, 14:26:15
Wydaje mi się, że WSDL to po prostu opis dostępnych usług sieciowych. Przydatny w momencie kiedy nie znamy konkretnego API i chcemy dowiedzieć się jakie argumenty przyjmuje dana funkcja i co zwraca. Jeśli serwer i klient jest pisany przez jedną osobę (API niepubliczne, takie jakie chce stworzyć autor wątku) WSDL wydaje się być opcjonalny (znamy funkcje udostępniane przez serwer, ich strukturę i sposób działania, nie musimy więc udostępniać takich informacji poprzez WSDL). Rozszerzenie SOAP w PHP działa zarówno w trybie
WSDL jak i
non-WSDL.
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.