2016-03-10 27 views
11

Czy istnieje sposób generowania żądań o formatach odpowiedzi żądania & z pliku WSDL - jeśli usługa sieciowa nie jest teraz aktywna.Generowanie kodu żądania/odpowiedzi z pliku WSDL

SoapUI nie daje mi odpowiedzi, chyba że skontaktuje się z Webservice z żądaniem. Czy jest jakieś inne narzędzie, które może to zrobić?

Powinienem założyć, że ta informacja jest dostępna - ponieważ bez niej - szkielety klientów, takie jak Axis/JAXWS itd., Nie będą w stanie generować kodu pośredniczącego do generowania żądania, a następnie interpretowania odpowiedzi.

+0

Można zaksięgować WSDL? – MikeC

+0

Jest wiele pytań na SO z tego samego tematu. Jak chcesz przekonwertować plik WSDL na format XML? XSL? Jawa? DO#? Narzędzie? Tymczasem spójrz na to: http://stackoverflow.com/questions/20486743/java-get-sample-request-xml-from-wsdl (używa również soapUI) –

+0

@SideriteZackwehdex - narzędzie. – user93353

Odpowiedz

1

Wykonanie tej czynności pozwoli uzyskać wgląd w strukturę WSDL i sposób, w jaki wykonuje ona swoją pracę. To dobra okazja do nauki. Można to zrobić za pomocą soapUI, jeśli masz tylko adres URL WSDL. (Używam soapUI 5.2.1) Jeśli faktycznie masz pełny plik WSDL jako plik dostępny, nie potrzebujesz nawet mydła. W tytule pytania pojawia się pytanie "Request & Response XML", podczas gdy treść pytania brzmi "Request & Response XML formats", które interpretuję jako schemat żądania i odpowiedzi. W każdym razie, poniższy schemat da ci schemat, który możesz użyć na XSD2XML do wygenerowania przykładowego XML.

  1. Rozpocznij "Nowy projekt mydła", wprowadź nazwę projektu i lokalizację WSDL; wybierz "Utwórz żądania", odznacz pozostałe opcje i kliknij przycisk OK.
  2. W drzewie "Projekt" po lewej stronie kliknij prawym przyciskiem myszy interfejs i wybierz "Pokaż przeglądarkę interfejsu".
  3. Wybierz zakładkę "Zawartość WSDL".
  4. Powinieneś zobaczyć tekst WSDL po prawej stronie; poszukaj bloku zaczynającego się od "wsdl: types", poniżej którego znajduje się schemat komunikatów wejściowych i wyjściowych.
  5. Każda definicja schematu zaczyna się od czegoś podobnego do <s:element name="GetWeather"> i kończy się na </s:element>.
  6. Skopiuj blok do edytora tekstowego; powyżej tego bloku dodają: <?xml version="1.0" encoding="UTF-8"?> <s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  7. Poniżej bloku skopiowane XML, dodać </s:schema>
  8. Zdecyduj, jeśli trzeba "UTF-16" zamiast "UTF-8"
  9. "S:" i „xmlns : s "powinien odpowiadać skopiowanemu blokowi (krok 5)
  10. Zapisz ten plik z rozszerzeniem" .xsd "; jeśli masz "XML Copy Editor" lub jakieś takie narzędzie (XML Spy, może być) powinieneś sprawdzić, czy jest to dobrze sformatowany XML i prawidłowy schemat.
  11. Powtórz dla wszystkich „element” elementów w okienku z prawej SoapUI aż
  12. W ten sposób dostaniesz jakieś definicje typów nie może być zainteresowany. Jeśli chcesz wybierać, stosowanie następującą metodę: : Przeanalizuj elementy "wsdl: operation" w obszarze "wsdl: portType" w tekście WSDL poniżej definicji typów. Będą mieć "wsdl: input" i "wsdl: output". Pobierz nazwy komunikatów z "wsdl: input" i "wsdl: output". Dopasuj je do nazw "wsdl: message", które prawdopodobnie znajdą się powyżej wpisów "wsdl: portType" w pliku WSDL. Uzyskaj nazwę elementu "wsdl: part" z elementu "wsdl: message" i poszukaj tej nazwy jako nazwy elementu w "wsdl: types". To będzie interesujący cię schemat.

Można spróbować powyżej procedury z użyciem WSDL w http://www.webservicex.com/globalweather.asmx?wsdl

0

Ponieważ jesteś mówiąc, że usługa nie jest żyć w tej chwili, można to zrobić poprzez stworzenie mockservices które stworzą format odpowiedzi próbki.

+0

Dlaczego konieczne jest, aby usługa sieciowa była aktywna? Wszystkie narzędzia, które generują kody pośredniczące (takie jak oś, jax-ws itp.) Są w stanie wygenerować kody pośredniczące za pomocą pliku wsdl - dlaczego więc konieczna jest usługa na żywo? – user93353

+0

Zasadniczo wysyła zapytanie do serwera (punkt końcowy) i powinien przetworzyć żądanie i powinien zwrócić odpowiedź. Jeśli usługa NIE jest aktywna, klient wyśle ​​żądanie, ale serwer nie zwróci odpowiedzi, ponieważ jest nie działa i wygeneruje błąd przekroczenia limitu czasu. – ChanGan

+0

Jeśli osie/jaxws są w stanie wygenerować kody pośredniczące, które mogą zrozumieć odpowiedź bez usługi, to dlaczego narzędzie nie będzie w stanie wygenerować przykładowej odpowiedzi xml bez usługi? relacja na żywo. – user93353

3

Parasoft to narzędzie, które może to zrobić. Zrobiłem to za pomocą tego narzędzia w moim poprzednim miejscu pracy. Możesz wygenerować żądanie w Parasoft SOATest i uzyskać odpowiedź w Parasoft Virtualize. Kosztuje jednak. Jednak program Parasoft Virtualize ma teraz darmową edycję społeczności, z której można generować komunikaty odpowiedzi z pliku WSDL. Możesz pobrać od parasoft community edition

3

Używam SOAPUI 5.3.0 ma opcję tworzenia odpowiedzi również (przez wsdl), możesz nawet stworzyć fałszywą usługę, która odpowie podczas wysyłania żądania. Procedura jest następująca

  1. prawym przyciskiem myszy na projekcie i opcję New Mock usługę, która będzie tworzyć makiety usługę wybrać.
  2. Kliknij prawym przyciskiem myszy na fałszywą usługę i wybierz Nowa Opcja operacji próbnej, która utworzy odpowiedź, której możesz użyć jako szablonu jako .
+0

Nice! Nigdy nie odkryłbym tego bez przeczytania tej odpowiedzi – Abacus

0

Najprostszym sposobem jest użycie tej chrom rozszerzenie link, szczęśliwy usług internetowych z prośbą