Laboratorium 10 - Web Services



Podobne dokumenty
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Tworzenie i wykorzystanie usług sieciowych

Zaawansowane aplikacje internetowe - laboratorium

Programowanie telefonów z Windows Phone 7, cz. 4

STWORZENIE MOBILNEJ APLIKACJI,

Wykład 6 Dziedziczenie cd., pliki

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Ćwiczenia 9 - Swing - część 1

Programowanie telefonów z Windows Phone 7, cz. 2

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Java Platform Micro Edition

Wykład 5 Okna MDI i SDI, dziedziczenie

Informatyka II. Laboratorium Aplikacja okienkowa

Aplikacje internetowe i rozproszone - laboratorium

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Narzędzia 4. dr inż. Tadeusz Jeleniewski

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Aplikacje internetowe i rozproszone - laboratorium

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Leszek Stasiak Zastosowanie technologii LINQ w

Laboratorium programowania urządzeń mobilnych

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Programowanie Obiektowe Ćwiczenie 4

Instrukcja laboratoryjna cz.2

Web Services (SOAP) Ćwiczenie 1

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Zaawansowane aplikacje WWW - laboratorium

4 C#. Tworzenie aplikacji sieciowych. 101 gotowych projektów

Środowiska rozproszone. WebService

using System;... using System.Threading;

Tworzenie i wykorzystanie usług

Prosta aplikacja klient - serwer na bazie protokoªu UDP. Sprawozdanie.

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Szkoła Techniczno Ekonomiczna w Świdnicy. Języki i paradygmaty programowania - 8

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Visual Studio instalacja

Michał Jankowski. Remoting w.net 2.0

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Szybkie tworzenie grafiki w GcIde

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Programowanie platform mobilnych PocketPC

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Infrastruktura aplikacji WWW

Kurs programowania 2 - listy

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Zaawansowane aplikacje internetowe laboratorium

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Aplikacje WWW - laboratorium

Tablice, DataGridView

Klasy i obiekty cz II

Platformy Programowania

Programowanie obiektowe i zdarzeniowe

Tym razem nie skorzystamy z mechanizmu. Podglądanie pulpitu

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Zaawansowane aplikacje internetowe laboratorium REST

Języki i metody programowania Java Lab2 podejście obiektowe

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Język C++ wykład VIII

Metody Metody, parametry, zwracanie wartości

Programowanie obiektowe

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

I - Microsoft Visual Studio C++

Lokalizacja Oprogramowania

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Programowanie obiektowe

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Instrukcja laboratoryjna cz.3

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Podstawy i języki programowania

Aplikacje w środowisku Java

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 2).

Analizując żądania za pomocą narzędzi developerskich można odczytać listę preferowanych języków, jak na poniższym przykładzie.

ESDI. WebService. Wersja 1.2. Strona 1

DataGridView. Aby dodawać kolumny wybieramy z listy zadań Add Column..., co wywoła okno dodawania kolumn, rys. 2. Rysunek 1

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Przewodnik krok po kroku:

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Katalog książek cz. 2

Git, Bitbucket, IntelliJ IDEA

Dostęp do baz danych w ASP.NET.

Aplikacje w środowisku Java

HttpRequest Aplikacja Czat

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Klasy cd. Struktury Interfejsy Wyjątki

Wyjątki (exceptions)

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Transkrypt:

Laboratorium 10 - Web Services W ramach laboratorium zapoznamy się z koncepcją Web Service ów (odmiana point-to-point Web Service). W kolejnych krokach utworzony zostanie projekt, w którym wykorzystana zostanie istniejąca usługa sieciowa. Następnie utworzony zostanie kolejny projekt, w którym zbudujemy i opublikujemy własną usługę. W dalszej części dołączymy ją do swojego projektu konsumenta. Na zakończenie wykonamy połączenia z usługą sieciową w sposób asynchroniczny i na dowolnym strumieniu danych. A. Konsumpcja usługi WS Zadanie polega na utworzeniu projektu ASP.NET Web Site o nazwie GeoIP. Do utworzonej strony Default.aspx dodajemy TextBox a o nazwie adres i Button Sprawdz oraz jedną Label o nazwie wynik. Dodajemy do projektu referencje Add Web References w url podać adres: http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl, kliknąć GO -> wyszuka i pokaże jakie metody oferuje wołana usługa sieciowa. W polu Web reference name podać GeoIP i kliknąć Add Reference. 1

Dodajemy metodę na OnClick do Button a protected void Button1_Click(object sender, EventArgs e) try IPHostEntry ipki = Dns.GetHostEntry(TextBox1.Text); String ip= ipki.addresslist[0].tostring(); GeoIP.IP2Geo geo = new GeoIP.IP2Geo(); GeoIP.IPInformation info = new GeoIP.IPInformation(); info = geo.resolveip (ip,"0"); Label1.Text = info.country; catch (Exception ex ) Label1.Text = ex.message; Dodać using System.Net; B. Tworzenie własnej usługi WS Zadaniem będzie utworzenie własnego WS o nazwie kalkulator z czterema metodami dodaj, odejmnij, mnoz, dziel. Tworzymy nowy projekt typu Web Site i wybieramy template ASP.NET Web Service o nazwie Kalkulator Wpisujemy kod czterech metod nasze usługi [WebService(Namespace = "http://dziubich.net/")] [WebServiceBinding(ConformsTo = WsiProfiles.None)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service : System.Web.Services.WebService public Service () //Uncomment the following line if using designed components //InitializeComponent(); [WebMethod] public double dodaj(double a, double b) return (a + b); [WebMethod(MessageName="dodaj2")] public double dodaj(string a, String b) return dodaj(double.parse(a),double.parse(b)); [WebMethod(Description="Metoda odejmuje dwie liczby")] public double odejmnij(double a, double b) return (a - b); [WebMethod] public double mnoz(double a, double b) return (a * b); 2

[WebMethod] public double dziel(double a, double b) if (b == 0) throw new Exception("Bład dzielenia przez zero"); return (a/b); C. Konsumpcja własnej WS do tego samego solution dodać projekt konsolowy z dopisaniem klasy konsolowej konsumującej nasz WS kalkulator należy dodać usługę sieciową przez Add Service Reference -> Advanced -> Add Web References D. Wywołanie asynchroniczne WS Celem jest utworzenie klienta WS, która tłumaczy zadany tekst na alfabet Brailla. W tym celu zakładamy nowe Solution i projekt WinForm. Dodajemy referencje WSX do usługi http://www.webservicex.net/braille.asmx?wsdl (jak w punkcie C) Na formie umieszczamy jeden TextBox, Button i PictureBox. Dodajemy przestrzeń nazw System.IO. Dodajemy metodę na OnClick do Button a private void button1_click(object sender, EventArgs e) WSX.Braille usluga = new WSX.Braille(); // przy wpisaniu poniższej linii po znaku += można użyć //Alt+TAB do wygenerowania potrzebnego nagłówka metody usluga.brailletextcompleted += new WindowsFormsApplication6.WSX.BrailleTextCompletedEventHandl er(usluga_brailletextcompleted); usluga.brailletextasync(this.textbox1.text, (float)26.0); void usluga_brailletextcompleted(object sender, WindowsFormsApplication6.WSX.BrailleTextCompletedEventArgs e) byte[] obraz = e.result; this.picturebox1.image = new Bitmap (new MemoryStream(obraz)); 3

E. Strumień danych wykorzystanie gotowego WS (mapy) w aplikacji typu WindowsForm W kolejnym kroku podejmiemy próbę pobrania mapy dla określonych współrzędnych geograficznych. 1. W nowym solution zakładamy nowy projekt Windows Forms Application o nazwie KlientWSMap. 2. Do utworzonego projektu dodajemy referencję od usługi przez Add Service References (Z okna usługi klikamy na Advanced i wybieramy Add Web References) lub Add Web References bezpośrednio jeżeli jest. Wpisujemy adres http://terraservice.net/terraservice2.asmx i nazywamy przestrzeń jako TS. Klikamy na Add References Pieniek dla wywołania usługi został wygenerowany. W kodzie Form1.cs, uzupełniamy namespace y o System.Drawing.Imaging i System.IO i dodajemy poniższe metody wywołujące WS. //metoda pobierająca obraz zawierający dane miejsce. Bitmap GetTiledImage(string City, string State, TS.Scale Scale, int cx, int cy) Bitmap bitmap = null; Graphics g = null; try // budowanie obiektu z klasy pienka TS.TerraService ts = new TS.TerraService(); // ustawienie danych miejsca do wyświetlenia TS.Place place = new TS.Place(); 4

place.city = City; place.state = State; place.country = "USA"; // pozyskanie współrzędnych miejsca do wyświetlenia TS.LonLatPt point = ts.convertplacetolonlatpt(place); // Compute the parameters for a bounding box TS.AreaBoundingBox abb = ts.getareafrompt(point,1, Scale, cx, cy); // Create an image to fit the bounding box bitmap = new Bitmap(cx, cy, PixelFormat.Format32bppRgb); g = Graphics.FromImage(bitmap); int x1 = abb.northwest.tilemeta.id.x; int y1 = abb.northwest.tilemeta.id.y; int x2 = abb.northeast.tilemeta.id.x; int y2 = abb.southwest.tilemeta.id.y; for (int x = x1; x <= x2; x++) for (int y = y1; y >= y2; y--) TS.TileId tid = abb.northwest.tilemeta.id; tid.x = x; tid.y = y; Image tile = Image.FromStream (new MemoryStream(ts.GetTile(tid))); g.drawimage(tile, (x - x1) * tile.width - (int)abb.northwest.offset.xoffset, (y1 - y) * tile.height - (int)abb.northwest.offset.yoffset, tile.width, tile.height); tile.dispose(); mapy"); return bitmap; catch (Exception) if (bitmap!= null) bitmap.dispose(); return GetErrorImage("Nie można pokazać żądanej 5

finally if (g!= null) g.dispose(); Bitmap GetErrorImage(string message) Bitmap bitmap = new Bitmap(1, 1, PixelFormat.Format32bppRgb); Graphics g = Graphics.FromImage(bitmap); Font font = new Font("Verdana", 8); SizeF size = g.measurestring(message, font); int cx = (int)size.width; int cy = (int)size.height; bitmap.dispose(); g.dispose(); // Generate a bitmap containing the error message bitmap = new Bitmap(cx, cy, PixelFormat.Format32bppRgb); g = Graphics.FromImage(bitmap); SolidBrush redbrush = new SolidBrush(Color.Red); SolidBrush whitebrush = new SolidBrush(Color.White); g.fillrectangle(whitebrush, 0, 0, 256, 64); g.drawstring(message, font, redbrush, 0, 0); whitebrush.dispose(); redbrush.dispose(); font.dispose(); g.dispose(); // Return the image return bitmap; 6

Na formę wstawiamy kontrolkę PictureBox oraz przycisk Pobierz mapę Do przycisku Pobierz mapę dopisujemy metodę na kliknięcie private void button1_click(object sender, EventArgs e) this.picturebox1.image = GetTiledImage("Los Angeles", "CA", TS.Scale.Scale8m, picturebox1.width, picturebox1.height); 7