2011-08-25 16 views
5

Potrzebuję skonsumować niektóre usługi webowe .NET asmx, które są obecnie implementowane w niektórych witrynach. Muszę utworzyć aplikację, która zużywa te usługi internetowe w taki sam sposób, jak robi to witryna internetowa. Są dwa problemy. Po pierwsze, nie mam żadnych specyfikacji na temat tych metod usług internetowych (wywołania, używany format i itp.). I po drugie, mam tylko zbudować aplikację, która używa JSON-framework do pobierania danych JSON z użycia interfejsu API. Zgaduję, że zostało to zrobione przy użyciu usług REST webservices :) Rozumiem, że w celu wykonania postów/dostaje się do serwera muszę skonstruować ciąg żądania, następnie przekazać go do serwera, uzyskać wyniki, przeanalizować je (XML lub JSON) i następnie obejrzyj je. Tak więc nie wiem, jak rozpoznać format serwisów internetowych w bieżącej witrynie. Widziałem źródło tej strony, zobaczyłem kilka plików kodu Javascript, które robią wiele tajemniczych sprawdzeń, sprawdzania poprawności i innych rzeczy. Jak zidentyfikować właściwy format?Jak odróżnić usługi internetowe SOAP lub REST?

Odpowiedz

6

Jeśli jest to usługa .NET ASMX, zawsze jest to SOAP. Usługa SOAP wyświetlana przez HTTP będzie zawsze używać komunikacji HTTP POST. Powinien także udostępnić plik .wsdl do konsumpcji i generowania kodu klienta, więc nie powinieneś się martwić o korzystanie z frameworku JSON lub orkiestrowanie własnych żądań HTTP do tej usługi sieciowej ... Twój wygenerowany Objective-C klient powinien się tym zająć.

This question seems to have the answers you need for doing this in Objective-C.

+0

Próbowałem wyświetlić więcej informacji z firefug firefug. Po śledzeniu żądań widzę, że żądanie dotyczy jakiegoś linku: http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123 wygląda jak usługa sieciowa REST. – Centurion

2

Jak @whaley mówi w swej odpowiedzi, wygląda na to, że masz do czynienia z usługą SOAP tutaj. Wiedząc, że pozwala ci to zrobić krok we właściwym kierunku, ale jeśli chcesz wejść z nim w interakcję, musisz zrobić coś więcej. Musisz znać szczegóły obsługiwanych operacji SOAP, schemat XML dla komunikatów żądania i odpowiedzi itp. Jeśli jesteś w stanie znaleźć plik WSDL, powinien on dostarczyć wszystkie te informacje.

Jeśli nie możesz wyśledzić pliku WSDL (niektóre usługi nie lubią ułatwiać tego z różnych powodów), to nadal możesz je znaleźć. Jeśli witryna naprawdę współdziała z interfejsem SOAP, możesz sprawdzić, jakie zapytania wysyła Twoja przeglądarka za pomocą dowolnej liczby narzędzi. W Safari włącz menu narzędzi programistycznych, a następnie pokaż inspektora sieci. Możesz zobaczyć szczegóły żądań HTTP i zobaczyć, co się dzieje. Firefox ma wtyczkę firebug, która potrafi zrobić to samo i więcej. Każda przeglądarka ma własne narzędzia dla programistów, ale musisz znaleźć odpowiednie narzędzie do swojej przeglądarki.

Słowo ostrzeżenia: Często strona internetowa, która współdziała z usługą back-end, nie korzysta bezpośrednio z usługi SOAP. Może wykorzystywać alternatywny i niepubliczny interfejs do wykonywania połączeń, których potrzebuje. Jeśli spojrzysz na żądania wysyłane przez twoją przeglądarkę i wygląda na komunikat SOAP (wiele elementów, takich jak SoapEnvenlope z oddzielnym XML żądania/odpowiedzi), to całkiem bezpiecznie jest założyć, że możesz replikować te komunikaty SOAP z obiektu c. Jeśli nie, możesz mieć pecha, chyba że możesz wyśledzić plik WSDL.

Powiązane problemy