newBuilder(), build() metodlary
HttpRequеst klassy http-haýyşyny beýan etmek üçin ulanylýar, onuň adyndanam aňsat düşnükli. Bu obýekt özi hiç zat etmeýär, diňe http-haýyş barada dürli maglumaty saklaýar. Şonuň üçin, belki, eýýäm çaklaýansyňyz, ony döretmek üçin hem Builder şablony ulanylýar.
HttpRequest request = HttpRequest.newBuilder() .method1() .method2() .methodN() .build();
Metodlaryň newBuilder() we build() arasyndaky çagrylyşynyň arasynda HttpRequest obýektini konstruksiýa etmek üçin ähli metodlary çagyrmak gerek.
Ýönekeý haýyş nusgasy aşa seredýär:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://javarush.com”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
HttpRequest klassynyň ähli metodlaryny resmi dokumentasiýada tapyp bilersiňiz.
Indem iň meşhur metodlary öwreneris.
uri() metody
uri() metody bilen http-haýyş ugradylar URI (ýa-da URL) kesgitläp bolýar. Mysal:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://javarush.com”) )
.build();
Bu kody has gysga görnüşde ýazyp bolýar, URI-ni newBuilder() metodyna gönükdirip berseňiz:
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://javarush.com”) ).build();
Möhüm! URI-ni döretmek üçin iki usul bar:
- new URI(String)
- URI.create(String)
Ikinji usul has amatly. Birinji usul, URI konstruktory public URI(String str) throws URISyntaxException görnüşinde beýan edilenligi sebäpli, örän gowy däl, URISyntaxException — bu checked-eksepsiýa.
GET(), POST(), PUT(), DELETE() metodlary
Http-haýyş metodyny şu metodlaryň kömegi bilen kesgitläp bolýar:
- GET()
- POST()
- PUT()
- DELETE()
Ýönekeý GET-haýyş şu şekilde sereder:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://javarush.com"))
.GET()
.build();
version() metody
HTTP protokolynyň wersiýasyny hem kesgitläp bolýar. Olaryň barysy 2 görnüşi bar:
- HttpClient.Version.HTTP_1_1
- HttpClient.Version.HTTP_2
Geliň, HTTP/2 protokoly boýunça haýyş döretmek isleýändigiňizi çak edeliň, onda size şeýle bir zat ýazmaly:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://javarush.com"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
Örän aňsat, şeýle dälmi? :)
timeout() metody
Haýyşyň ýerine ýetirilme wagtyny hem kesgitläp bolýar. Bu wagt geçer, emma haýyş ýerine ýetirilmezse, HttpTimeoutException eksepsiýasy çykar.
Wagt özi Java DateTime API-den Duration obýekti bilen kesgitlenýär. Mysal:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://javarush.com"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
Bu metodyň barlygy HttpClient we HttpRequest klasslarynyň dürli meseleleri çözmek ukybyna eýe bolanlygyny görkezýär. Haýyş ýerine ýetirilýän wagtynda bir zat bolan hadysalar birnäçe sekunt dowam etse, häzirki wagtda eksepsiýa almak we dogry jogap bermek has peýdaly bolar.
header() metody
Her haýyşa islendik sany başlyklar goşup bolýar. Muny etmek hem ähli beýleki zat ýaly aňsat. Munuň üçin aýratyn bir metod bar — header(). Mysal:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://javarush.com"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
Başlyklar toplumyny massiwa öwürseňiz, birnäçe başlyk girizmek üçin başga bir alternatiw usul bar, ulanyp bilersiňiz:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://javarush.com"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
Ähli zat elementar derejede aňsat.
GO TO FULL VERSION