Sukurkite žiniatinklio paslaugų klientą „Java“

Nauji informacijos perdavimo formatai verčia mus keisti požiūrį į savo programas, kiekvieną dieną labiau priklausome nuo interneto, o kartu ir duomenų perdavimo tarp tolimų vietų ir skirtingų technologijų.

Skirtingų technologijų integravimas praeityje visada buvo iššūkis, tačiau atsižvelgiant į naujus standartus ir protokolo stiprumą HTTP dabar daug lengviau, nes mes nepriklausome nuo programų integravimo, tačiau kiekviena programa turi žiniatinklio sąsają, kuri padiktuoja jos duomenis.

In „Java“ daug kartų mums reikės prieiti prie informacijos, kurią turi ar kuria kitos programos, todėl negalime pamiršti žinių apie tai, kaip užmegzti ryšį iš programos, aspekto „Java“ į tinklą. Bet ne tik tinklams, mes taip pat turime žinoti, kaip tai padaryti interneto paslaugų klientai net jei tai yra paprasčiausias būdas, nes tai užtikrinsime, kad mūsų aplinkoje nebūtų izoliuoti.

Kas yra žiniatinklio paslaugos?The Interneto paslaugos Tai yra programos, rastos serveriuose, turinčiuose prieigą prie tinklo; jos gali būti bet kokia kalba ar technologija, tačiau visas bendravimas su „išoriniu pasauliu“ yra valdomas per HTTP ir jo metodai, GET, POST, PUT, DELETE ir kt.

SujungimaiĮdomus dalykas tokio tipo programose yra galimybė užmegzti ryšį tarp visiškai skirtingų technologijų, pavyzdžiui, mes galime turėti žiniatinklio paslaugą, parašytą Python pasiimti mums gamyklos inventorių ir tada pateikti savo paraišką „Java“ mes prisijungiame prie jo, kad žinotume produkto kiekius.

Toks lengvumas pastaraisiais metais paskatino jų greitą priėmimą ir tapo įprastu pasiūlyti tokias priemones verslo sistemoms ir programoms. Siūlomos net asmeninės programos, tokios kaip tinklaraščiai ar forumai Interneto paslaugos palengvinti mobiliųjų programų kūrimą ir kad viskas išliktų toje pačioje ekosistemoje.

Jau šiek tiek matę žiniatinklio paslaugų temą, pažiūrėkime, kaip jos klasifikuojamos.

REST paslaugos


Šios paslaugos leidžia perduoti duomenis per HTTP, tik naudojant šio protokolo metodus, bendravimui paprastai reikia siųsti tik duomenis naudojant formas arba JSONAS, kai kurie netgi gauna iki XML.

Šiuo metu tai yra populiariausia, nes klientų pirkimas vartojimui yra labai paprastas ir nereikalauja daug papildomų pasiruošimų. Tiesiog tam, kad mūsų klientas galėtų pateikti užklausą GET į vieną URL paslaugą, galime pradėti ją naudoti ar vartoti, nes taip pat žinomas duomenų gavimo veiksmas.

MUOLO paslaugos


Tarnyba MUILAS yra daug vyresnis nei POILSISir dar prieš kelerius metus tai buvo standartinis būdas įgyvendinti programas Interneto paslaugos, jo konstrukcija reikalauja visų pirma laikytis kai kurių protokolų ir būtina sukurti failą XML paskambino WSDL, kur apibrėžiami metodai, kuriuos klientas gali pasiekti.

Dėl didelio sudėtingumo paruošti klientus vartoti tokio tipo paslaugas jos populiarumas mažėjo, todėl dauguma naujų technologijų į tai neatsižvelgia. Tačiau vis dar yra daug technologijų pasaulyje egzistuojančių paslaugų, kurios valdomos pagal šį metodą, todėl, nors ir nebevartojamas, vis tiek reikia žinoti, kaip ja naudotis.

Šio tipo paslaugų sudėtingumas yra skirtingų paslaugų paruošimas XML, ir laikykitės standartų pagal platformas iki laiško, dėl šios priežasties tai yra sudėtinga, todėl kūrėjai perėjo prie POILSIS.

Sukurkite programą, jungiančią naudojant TCP


Kadangi mes šiek tiek išsamiau perskaitėme ir peržiūrėjome, kas yra teorinė jų dalis Interneto paslaugos, mes pradėsime praktinę šios pamokos dalį atlikdami labai paprastą pratimą, kuris padės mums suprasti dalykų srautą.

Mes ketiname užmegzti paprastą ryšį iš mūsų programos per tinklą TCP su komanda, kuri yra prieinama ir pasiekiama joje, tam mums reikės žinoti jūsų adresą IP ir prievadą, kuris yra prieinamas ir nesilaiko skirtingų ugniasienių apribojimų.

ReikalavimaiPirmiausia mums reikės paketo java.net.Lizdas Tai suteikia mums daugybę įrankių, kurie palengvins mūsų gyvenimą užmezgant ryšius, akivaizdu, kad mūsų parodytas pavyzdys yra labai paprastas, tačiau tai suteikia mums pagrindą, kad galėtume kurti dalykus, kurie nepriklauso nuo mūsų poreikių.

Mes ketiname sukurti programą, kuri bandys prisijungti prie mašinos per tam tikrą prievadą, tačiau ši programa taip pat įvertins, ar ryšio metu įvyko klaida ar kokia nors komplikacija, todėl galime veikti kruopščiai ir nelaukti mirtino nesėkmė Pažvelkime į šio pavyzdžio kodą:

 importuoti java.net.Socket; importuoti java.net.UnknownHostException; importuoti java.net.NoRouteToHostException; importuoti java.net.ConnectException; public class ConnectionTest {public static void main (String [] argv) {String server = argv.length = = 1? argv [0]: "localhost"; int prievadas = 80; try (Socket sock = new Socket (server, port)) {System.out.println ("- Sėkmingas prisijungimas prie:" + server + "-"); } catch (UnknownHostException e) {System.err.println (serveris + "Nežinomas serveris"); grįžti; } sugauti (NoRouteToHostException e) {System.err.println (serveris + "Už taikymo srities ribų"); grįžti; } catch (ConnectException e) {System.err.println (serveris + "Ryšys atmestas"); grįžti; } catch (java.io.IOException e) {System.err.println (serveris + '' + e.getMessage ()); grįžti; }}}
Mes pradedame nuo paketo importavimo java.net.Lizdas tai mes turėsime klasę Lizdas kuris yra tas, kurį vėliau naudosime ryšiui užmegzti, jei vykdydami programą neperduosime jam argumento, jis tiesiogiai prisijungs prie mūsų kompiuterio, šiuo atveju nurodome 80 prievadą, bet tai gali būti kitas.

Mes dedame egzemplioriaus sukūrimą Lizdas bloke pabandyk - pagauk tai leidžia įvertinti išimtis, jei ryšys nepavyksta, o ne staiga nutraukti programą. Galiausiai turime skirtingus sugavimo blokus, kurių kiekviena turi skirtingą išimtį, kad galėtume suprasti, kas nutiko.

Kad išimtys veiktų, matėme, kad pradžioje importavome paketą java.net kurį mes naudosime šiame pavyzdyje, dabar pažiūrėkime, kaip visa tai atrodo paleidus mūsų programą. Vykdydami mūsų programą, toliau esančiame paveikslėlyje pažiūrėkime, kaip mums pavyko sėkmingai pasiekti maršrutizatorių bevielis internetas ir mūsų vietinis šeimininkas:

REST paslaugos klientas


Šiame pavyzdyje mes sukursime nedidelį žiniatinklio paslaugų klientą, kuris prisijungs prie serverio POILSIS, tam mums reikia tik serverio, kuris galėtų atsakyti į metodą GET apie HTTP, todėl galime naudoti freegeoip.net, kuris, priklausomai nuo to, ką perduodame per URL, gali grąžinti a JSONAS su duomenimis iš bet kurio norimo tinklalapio.

Pažiūrėkime, kokį kodą padarėme:

 importuoti java.net.URL; importuoti java.net.URLConnection; importuoti java.io.BufferedReader; importuoti java.io.InputStreamReader; public class ClientRest {public static void main (String [] args) metimai Išimtis {URLConnection conn = naujas URL ("http://freegeoip.net/json/www.espnf1.com") .openConnection (); pabandyti (BufferedReader is = new BufferedReader (new InputStreamReader (conn.getInputStream ())))) {String line; while ((eilutė = is.readLine ())! = null) {System.out.println (eilutė); }}}}
Pirmas dalykas, kurį mes darome, yra klasių importavimas URL Y URLConnection, tai leidžia mums pirmiausia konvertuoti eilutę į URL, kurį galima interpretuoti „Java“ ir, antra, sukurkite tinkamą ryšį. Tada importuojame dvi klasės bibliotekas, kurios leidžia mums manipuliuoti duomenimis, kuriuos gausime kaip atsakymą iš žiniatinklio paslaugos.

Galiausiai mes prisijungiame prie freegeoip.netTokiu atveju mes perduodame jam bet kurį žinomą puslapį, tokiu būdu galime gauti tam tikrą rezultatą, tada išsaugome atsakymą buferyje, tada jį perskaitome ir perduodame String objektui, galiausiai spausdiname turinį ir gausime kažką panašaus į tai, ką matome šiame paveikslėlyje:

DIDELIS

Žinoma, tai yra paprastas būdas suprasti, kaip veikia žiniatinklio paslaugos, nes jis neapima parametrų siuntimo iš mūsų kliento, tačiau tai galima dokumentuoti „Apache HttpClient“, kuris gali suteikti jums puikių įrankių, susijusių su tokio tipo žiniatinklio paslaugų vartojimu, kurį paliekame kaip užduotį.

Baigę šią pamoką, sukūrėme keletą programų, kurios padeda mums įsibėgėti ir išmokti Interneto paslaugosTai jau matome, kaip mūsų protas tikrai pradės įsivaizduoti geriausią šių įrankių panaudojimą mūsų programose ir taip padarys viską daug didesnį.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave