Java'da web hizmetleri için istemci yapın

Yeni bilgi aktarım formatları bizi uygulamalarımız hakkında düşünme şeklimizi değiştirmeye zorluyor, her geçen gün internete ve onunla birlikte uzak yerler ve farklı teknolojiler arasındaki veri aktarımına daha fazla bağımlıyız.

Farklı teknolojileri entegre etmek geçmişte her zaman bir zorluktu, ancak yeni standartlar ve protokolün aldığı güçle HTTP artık çok daha kolay, çünkü uygulamaları entegre etmeye bağımlı değiliz, ancak her uygulamanın verilerini dikte etmek için bir web arayüzü var.

İçinde Java çoğu zaman diğer uygulamaların sahip olduğu veya oluşturduğu bilgilere erişmemiz gerekecek ve bu nedenle bir uygulamadan nasıl bağlantı kurulacağına dair bilgi yönünü ihmal edemeyiz. Java ağa. Ama sadece ağlara değil, nasıl yapılacağını da bilmeliyiz. web hizmetleri istemcileri basit bir şekilde olsa bile, bununla çevremizde tecrit edilmeyeceğimizden emin olacağız.

Web servisleri nelerdir?NS Ağ hizmetleri Bir ağa erişimi olan sunucularda bulunan uygulamalardır, bunlar herhangi bir dilde veya teknolojide olabilir, ancak "dış dünya" ile tüm iletişim, aracılığıyla yönetilir. HTTP ve yöntemleri, GET, POST, PUT, DELETE vb..

BağlantılarBu tür bir uygulama ile ilgili ilginç olan şey, tamamen farklı teknolojiler arasında bağlantı kurma olasılığıdır, örneğin bir web servisine sahip olabiliriz. piton bize bir fabrikanın envanterini çıkarmak ve daha sonra uygulamamızda Java bir ürünün miktarlarını bilmek için ona bağlanırız.

Bu kolaylık, son yıllarda hızla benimsenmelerini sağlayan ve iş sistemleri ve uygulamaları söz konusu olduğunda bu tür araçları sunmayı standart hale getiren şeydir. Bloglar veya forumlar gibi kişisel uygulamalar bile Ağ hizmetleri mobil uygulamaların üretilmesini kolaylaştırmak ve her şeyin aynı ekosistemde kalması.

Web servisleri konusunu biraz gördükten sonra, nasıl sınıflandırıldıklarını görelim.

REST hizmetleri


Bu tür hizmetler, veri iletimini sağlar. HTTP, yalnızca bu protokolün yöntemlerini kullanarak, genellikle iletişim yalnızca formlar veya JSON, hatta bazıları XML.

Tüketicilerin tüketim için inşası çok basit olduğu ve fazla ek hazırlık gerektirmediği için şu anda en popüler olanıdır. Basitçe, müşterimizin bir istek başlatabilmesi için ELDE ETMEK birine URL hizmetin veri elde etme eylemi olarak kullanmaya veya tüketmeye başlayabileceğimiz de bilinmektedir.

SABUN hizmetleri


Hizmet SABUN ondan çok daha yaşlı DİNLENMEKve birkaç yıl öncesine kadar uygulamalarını gerçekleştirmenin standart yoluydu. Ağ hizmetleri, yapısı özellikle bazı protokollere uyulmasını gerektirir ve bir dosya oluşturmak gerekir. XML isminde WSDL, istemcinin erişebileceği yöntemlerin tanımlandığı yerdir.

Müşterileri bu tür bir hizmeti tüketmeye hazırlamanın yüksek karmaşıklığı nedeniyle popülaritesi azalmaktadır, bu nedenle çoğu yeni teknoloji bunu dikkate almamaktadır. Bununla birlikte, teknolojik dünyada hala bu modalite altında yönetilen birçok hizmet var, bu yüzden kullanımdan kalksa bile, nasıl kullanılacağını bilmek gerekiyor.

Bu tür bir hizmetin karmaşıklığı, farklı hizmetlerin hazırlanmasında yatmaktadır. XML, ve mektuba göre platformlara göre standartları takip edin, bu tür bir sebep onu hantal hale getiren şeydir ve bu nedenle geliştiriciler göç etmektedir. DİNLENMEK.

TCP kullanarak bağlanan bir program oluşturun


Ne olduklarının teorik kısmını neyin temsil ettiğini biraz daha kapsamlı bir şekilde okuyup gözden geçirdiğimizden beri. Ağ hizmetleri, işlerin akışını anlamamıza yardımcı olacak çok temel bir alıştırma yaparak bu öğreticinin pratik kısmına başlayacağız.

Kullandığımız ağ üzerinden uygulamamızdan basit bir bağlantı yapacağız. TCP içinde erişilebilir ve müsait bir ekiple, bunun için adresinizi bilmemiz gerekecek IP ve kullanılabilen ve farklı güvenlik duvarlarının kısıtlamalarının dışında kalan bir bağlantı noktası.

GereksinimlerHer şeyden önce paketi talep edeceğiz java.net.Socket bu bize bağlantılar kurarak hayatımızı kolaylaştıracak bir dizi araç veriyor, gösterdiğimiz örnek açıkçası çok basit ama gereksinimlerimize bağlı olarak ötesinde şeyler yaratabilmemiz için bize temel veriyor.

Belirli bir port üzerinden bir makineye bağlanmaya çalışan bir program oluşturacağız, ancak bu program bağlantı işlemi sırasında bir hata veya herhangi bir komplikasyon olup olmadığını da değerlendirecek, bununla özenle hareket edebiliyor ve ölümcül bir sonuç beklemiyoruz. fail Bu örneğin koduna bakalım:

 java.net.Socket'i içe aktar; Java.net.UnknownHostException'ı içe aktar; Java.net.NoRouteToHostException'ı içe aktar; Java.net.ConnectException'ı içe aktar; ortak sınıf ConnectionTest {genel statik geçersiz ana (String [] argv) {String sunucusu = argv.length = = 1? argv [0]: "yerel ana bilgisayar"; int bağlantı noktası = 80; try (Socket sock = new Socket (sunucu, port)) {System.out.println ("- Başarılı bağlantı:" + sunucu + "-"); } catch (UnknownHostException e) {System.err.println (sunucu + "Bilinmeyen sunucu"); geri dönmek; } catch (NoRouteToHostException e) {System.err.println (sunucu + "Kapsam dışı"); geri dönmek; } catch (ConnectException e) {System.err.println (sunucu + "Bağlantı reddedildi"); geri dönmek; } yakalama (Java.io.IOException e) {System.err.println (sunucu + '' + e.getMessage ()); geri dönmek; }}}
Paketi içe aktararak başlıyoruz java.net.Socket bununla sınıfa sahip olacağız Priz daha sonra bağlantıyı kurmak için kullanacağımız bu, programı çalıştırırken ona bir argüman iletmezsek, doğrudan bilgisayarımıza bağlanacaktır, bu durumda 80 numaralı bağlantı noktasını belirtiyoruz, ancak başka bir olabilir.

Örneğin oluşturulmasını yerleştiriyoruz Priz bir blokta dene - yakala bu, programı aniden sonlandırmak yerine bağlantının başarılı olmaması durumunda istisnaları değerlendirmemizi sağlar. Sonunda, neyin yanlış gittiğine dair bir fikir vermek için her biri farklı bir istisna ile farklı yakalama bloklarımız var.

İstisnaların işe yaraması için başlangıçta paketi ithal ettiğimizi gördük. java.net Bu örnekte kullanacağımız, şimdi tüm bunların programımızı çalıştırdığımızda nasıl göründüğüne bakalım. Programımızı çalıştırırken, yönlendiricimize nasıl başarılı bir şekilde erişebildiğimizi aşağıdaki resimde görelim. kablosuz internet ve bizim yerel ana bilgisayar:

REST hizmeti için istemci


Bu örnekte, bir sunucuya bağlanacak küçük bir web hizmeti istemcisi oluşturacağız. DİNLENMEK, bunun için yalnızca bize yönteme yanıt verebilecek bir sunucuya ihtiyacımız var. ELDE ETMEK nın-nin HTTP, bu nedenle, URL'den ne ilettiğimize bağlı olarak, freegeoip.net'i kullanabiliriz. JSON istediğimiz herhangi bir web sayfasından verilerle.

Şimdi yaptığımız kodu görelim:

 java.net.URL'yi içe aktar; Java.net.URLConnection'ı içe aktar; Java.io.BufferedReader'ı içe aktar; Java.io.InputStreamReader'ı içe aktar; genel sınıf ClientRest {genel statik geçersiz ana (String [] args) İstisna {URLConnection conn = yeni URL) atar ("http://freegeoip.net/json/www.espnf1.com") .openConnection (); try (BufferedReader = new BufferedReader (yeni InputStreamReader (conn.getInputStream ()))) {String line; while ((satır = is.readLine ())! = null) {System.out.println (satır); }}}}
Yaptığımız ilk şey sınıfları içe aktarmaktır. URL Y URLBağlantısı, bunlar ilk önce bir String'i tarafından yorumlanabilecek bir URL'ye dönüştürmemize izin verir. Java ve ikincisi, doğru bağlantıyı yapın. Ardından, web servisinden yanıt olarak alacağımız verileri değiştirmemize izin veren iki sınıf kitaplığı içe aktarıyoruz.

Son olarak web servisimize bağlantımızı yapıyoruz. freegeoip.netBu durumda, var olduğunu bildiğimiz herhangi bir sayfayı ona iletiriz, bu şekilde bir sonuç elde edebiliriz, sonra yanıtı bir arabellekte saklar ve sonra okur ve bir String nesnesine iletiriz, sonunda içeriği yazdırırız ve aşağıdaki resimde gördüğümüz gibi bir şey elde edecek:

BÜYÜT

Elbette bu, müşterimizden parametrelerin gönderilmesini kapsamadığından, web servislerinin nasıl çalıştığını anlayabilmek için basit bir yaklaşımdır, ancak bunun için bunlar üzerinde belgelenebilirler. Apache HttpClient, bir görev olarak bıraktığımız bu tür Web servislerinin tüketimi ile ilgili size üstün araçlar sağlayabilir.

Bununla bu öğreticiyi bitirdik, ustalaşmak için doğru yolda ilerlememize yardımcı olan birkaç program oluşturduk. Ağ hizmetleriBununla, zihnimizin uygulamalarımızda bu araçların en iyi kullanımlarını nasıl kesinlikle hayal etmeye başlayacağını ve böylece işleri çok daha büyük hale getireceğini zaten görüyoruz.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave