Nieuwe formaten voor informatieoverdracht dwingen ons om de manier waarop we over onze applicaties denken te veranderen, elke dag zijn we meer afhankelijk van internet en daarmee ook van de overdracht van gegevens tussen verre oorden en verschillende technologieën.
Het integreren van verschillende technologieën was in het verleden altijd een uitdaging, maar met de nieuwe standaarden en de kracht die het protocol heeft aangenomen HTTP nu is het veel gemakkelijker, omdat we niet afhankelijk zijn van het integreren van applicaties, maar elke applicatie heeft een webinterface om zijn gegevens te dicteren.
In Java vaak zullen we toegang moeten hebben tot informatie die andere applicaties hebben of genereren en daarom kunnen we het aspect van kennis over het maken van verbindingen vanuit een applicatie niet negeren Java netwerken. Maar niet alleen voor netwerken, we moeten ook weten hoe we dat moeten doen webservice-klanten ook al is het op een basale manier, want hiermee zorgen we ervoor dat we niet geïsoleerd raken in onze omgeving.
Wat zijn webservices?De webservices Het zijn applicaties die worden gevonden op servers die toegang hebben tot een netwerk, deze kunnen in elke taal of technologie zijn, maar alle communicatie met de "buitenwereld" wordt beheerd via HTTP en zijn methoden, GET, POST, PUT, DELETE, enz..
VerbindingenHet interessante van dit soort applicaties is de mogelijkheid om verbindingen te maken tussen totaal verschillende technologieën, we kunnen bijvoorbeeld een webservice laten schrijven in Python om ons de inventaris van een fabriek te geven en vervolgens in onze applicatie in Java we maken er verbinding mee om de hoeveelheden van een product te kennen.
Dit gemak heeft ervoor gezorgd dat ze de afgelopen jaren snel zijn ingevoerd en dat het de standaard is geworden om dergelijke tools aan te bieden als het gaat om bedrijfssystemen en -applicaties. Zelfs persoonlijke toepassingen zoals blogs of forums bieden uitkomst webservices om het genereren van mobiele applicaties te vergemakkelijken en dat alles in hetzelfde ecosysteem blijft.
Nadat we al iets over het onderwerp webservices hebben gezien, laten we eens kijken hoe ze worden geclassificeerd.
REST-services
Met dit soort diensten kunnen gegevens worden verzonden via: HTTP, alleen met behulp van de methoden van dit protocol, vereist de communicatie over het algemeen alleen het verzenden van gegevens via formulieren of JSON, sommigen ontvangen zelfs tot XML.
Het is het meest populair van het moment, omdat het samenstellen van klanten voor consumptie heel eenvoudig is en niet veel extra voorbereidingen vereist. Gewoon zodat onze klant een verzoek kan lanceren KRIJGEN tot een URL van de service die we kunnen gaan gebruiken of consumeren, omdat de actie om gegevens te verkrijgen ook bekend is.
SOAP-diensten
De dienst ZEEP is veel ouder dan RUST UIT, en tot een paar jaar geleden was het de standaard manier om toepassingen van webservices, de constructie ervan vereist het volgen van enkele protocollen in het bijzonder en het is noodzakelijk om een bestand te genereren XML genaamd WSDL, waar de methoden worden gedefinieerd waartoe de client toegang heeft.
Vanwege de hoge complexiteit om klanten voor te bereiden op het gebruik van dit soort diensten, is de populariteit ervan afgenomen, en daarom houden de meeste nieuwe technologieën er geen rekening mee. Er zijn echter nog steeds veel services in de technologische wereld die onder deze modaliteit worden beheerd, dus hoewel het in onbruik raakt, is het nog steeds noodzakelijk om te weten hoe het te gebruiken.
De complexiteit van dit soort diensten ligt in de voorbereiding van de verschillende XML, en volg de normen volgens de platforms naar de letter, dit soort reden maakt het omslachtig en daarom zijn ontwikkelaars gemigreerd naar RUST UIT.
Maak een programma dat verbinding maakt via TCP
Omdat we wat grondiger hebben gelezen en beoordeeld wat het theoretische deel vertegenwoordigt van wat ze zijn webservices, gaan we het praktische deel van deze tutorial beginnen met een zeer eenvoudige oefening die ons zal helpen de stroom van dingen te begrijpen.
We gaan een eenvoudige verbinding maken vanuit onze applicatie via het netwerk met behulp van TCP met een team dat daarin bereikbaar en beschikbaar is, hiervoor hebben we je adres nodig IK P en een poort die beschikbaar is en buiten de beperkingen van de verschillende firewalls valt.
VereistenAllereerst gaan we het pakket nodig hebben java.net.Socket dat geeft ons een reeks hulpmiddelen die ons leven gemakkelijker zullen maken door verbindingen tot stand te brengen, uiteraard is het voorbeeld dat we laten zien heel basaal, maar het geeft ons de basis om dingen te kunnen creëren die verder gaan dan onze vereisten.
We gaan een programma maken dat probeert verbinding te maken met een machine via een specifieke poort, maar dit programma zal ook evalueren of er een fout of een complicatie is opgetreden tijdens het verbindingsproces, hiermee kunnen we ijverig handelen en niet wachten op een fatale mislukking Laten we eens kijken naar de code voor dit voorbeeld:
import java.net.Socket; import java.net.UnknownHostException; import java.net.NoRouteToHostException; import java.net.ConnectException; openbare klasse ConnectionTest {public static void main (String [] argv) {String server = argv.length = = 1? argv [0]: "lokale host"; int-poort = 80; probeer (Socketsocket = nieuwe Socket (server, poort)) {System.out.println ("- Succesvolle verbinding met:" + server + "-"); } catch (UnknownHostException e) {System.err.println (server + "Onbekende server"); opbrengst; } catch (NoRouteToHostException e) {System.err.println (server + "Buiten bereik"); opbrengst; } catch (ConnectException e) {System.err.println (server + "Verbinding geweigerd"); opbrengst; } catch (java.io.IOException e) {System.err.println (server + '' + e.getMessage ()); opbrengst; }}}We beginnen met het importeren van het pakket java.net.Socket hiermee hebben we de klas Stopcontact dat is degene die we later zullen gebruiken om de verbinding tot stand te brengen, als we er geen argument aan doorgeven bij het uitvoeren van het programma, zal het rechtstreeks verbinding maken met onze computer, in dit geval geven we poort 80 aan, maar het kan een andere zijn.
We plaatsen de creatie van de instantie Stopcontact in een blok proberen te vangen dit stelt ons in staat om de uitzonderingen te evalueren als de verbinding niet succesvol is in plaats van het programma abrupt te beëindigen. Tot slot hebben we verschillende vangstblokken met elk een andere uitzondering om ons een idee te geven van wat er mis ging.
Om de uitzonderingen te laten werken, zagen we dat we in het begin het pakket hebben geïmporteerd java.net die we in dit voorbeeld gaan gebruiken, laten we nu eens kijken hoe dit er allemaal uitziet als we ons programma uitvoeren. Laten we bij het uitvoeren van ons programma in de volgende afbeelding zien hoe we met succes toegang hebben gekregen tot onze router Wifi en onze localhost:
Client voor een REST-service
In dit voorbeeld gaan we een kleine webserviceclient maken die verbinding maakt met een server RUST UIT, hiervoor hebben we alleen een server nodig die ons een reactie kan geven op de methode KRIJGEN van HTTP, daarom kunnen we freegeoip.net gebruiken die, afhankelijk van wat we via de URL doorgeven, een JSON met gegevens van elke webpagina die we willen.
Laten we eens kijken naar de code die we hebben gemaakt:
import java.net.URL; import java.net.URLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; public class ClientRest {public static void main (String [] args) genereert Exception {URLConnection conn = nieuwe URL ("http://freegeoip.net/json/www.espnf1.com") .openConnection (); probeer (BufferedReader is = nieuwe BufferedReader (nieuwe InputStreamReader (conn.getInputStream ()))) {String line; while ((regel = is.readLine ())! = null) {System.out.println (regel); }}}}Het eerste wat we doen is de klassen importeren URL Y URLVerbinding, hiermee kunnen we eerst een String converteren naar een URL die kan worden geïnterpreteerd door Java en ten tweede, maak de juiste verbinding. Vervolgens importeren we twee klassenbibliotheken waarmee we de gegevens kunnen manipuleren die we gaan ontvangen als reactie van de webservice.
Ten slotte maken we onze verbinding met de webservice van freegeoip.netIn dit geval geven we er elke pagina aan waarvan we weten dat deze bestaat, op deze manier kunnen we een resultaat verkrijgen, dan slaan we het antwoord op in een buffer en lezen het dan en geven het door aan een String-object, tenslotte printen we de inhoud en we krijgt zoiets als wat we in de volgende afbeelding zien:
VERGROTEN
Dit is natuurlijk een eenvoudige benadering om te kunnen begrijpen hoe webservices werken, aangezien het niet betrekking heeft op het verzenden van parameters van onze klant, maar hiervoor kunnen ze worden gedocumenteerd op Apache HttpClient, die u superieure tools kan geven met betrekking tot het gebruik van dit soort webservices, die we als een taak overlaten.
Hiermee hebben we deze tutorial afgerond, we hebben een aantal programma's gebouwd die ons op weg helpen om de webservicesHiermee zien we al hoe onze geest zich zeker het beste gebruik van deze tools in onze applicaties zal gaan voorstellen en zo de zaken veel groter zal maken.
Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven