mga pamamaraan newBuilder(), build()
Ang HttpRequest class ay ginagamit upang ilarawan ang isang http-request, na madaling maunawaan mula sa pangalan nito. Ang bagay na ito ay walang ginagawa sa kanyang sarili, naglalaman lamang ito ng iba't ibang impormasyon tungkol sa kahilingan ng http. Samakatuwid, tulad ng malamang na hulaan mo na, ang template ng Tagabuo ay ginagamit din upang likhain ito.
HttpRequest request = HttpRequest.newBuilder()
.method1()
.method2()
.methodN()
.build();
Kung saan sa pagitan ng mga tawag sa mga pamamaraan na newBuilder() at build() kailangan mong tawagan ang lahat ng mga pamamaraan upang makabuo ng isang bagayHttpRequest.
Ang isang halimbawa ng isang simpleng kahilingan ay ganito:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://codegym.cc”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
Maaari mong mahanap ang lahat ng mga pamamaraan ng klase ng HttpRequest sa link sa opisyal na dokumentasyon .
At pagkatapos ay susuriin natin ang pinakasikat sa kanila.
uri() na pamamaraan
Gamit ang uri() na paraan , maaari mong itakda ang URI (o URL) kung saan ipapadala ang kahilingan sa http. Halimbawa:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://codegym.cc”) )
.build();
Sa pamamagitan ng paraan, maaari mong gawing mas maikli ang code na ito sa pamamagitan ng pagpasa ng URI nang direkta sa newBuilder() na paraan :
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();
Mahalaga! Ang isang URI ay maaaring gawin sa dalawang paraan:
- newURI(String)
- URI.create(String)
Ang pangalawang paraan ay mas kanais-nais. Ang unang paraan, sa kasamaang-palad, ay hindi napakahusay, dahil ang URI constructor ay idineklara bilang pampublikong URI(String str) na nagtatapon ng URISyntaxException , at ang URISyntaxException ay isang checked exception.
Mga Paraan GET(), POST(), PUT(), DELETE()
Maaari mong itakda ang paraan ng paghiling ng http gamit ang mga sumusunod na pamamaraan:
- GET()
- POST()
- PUT()
- DELETE()
Narito kung ano ang magiging hitsura ng isang simpleng kahilingan sa GET:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.GET()
.build();
bersyon() na pamamaraan
Maaari mo ring itakda ang bersyon ng HTTP protocol. Mayroon lamang 2 pagpipilian:
- HttpClient.Version.HTTP_1_1
- HttpClient.Version.HTTP_2
Sabihin nating gusto mong gumawa ng kahilingan gamit ang HTTP/2 protocol, pagkatapos ay kakailanganin mong isulat:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
Napakasimple, hindi ba? :)
timeout() na pamamaraan
Maaari mo ring itakda ang oras ng pagpapatupad ng query. Kung ito ay pumasa at ang kahilingan ay hindi nakumpleto, isang HttpTimeoutException ang itatapon .
Ang oras mismo ay itinakda gamit ang bagaytagalmula sa Java DateTime API. Halimbawa:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
Ang pagkakaroon ng pamamaraang ito ay nagpapakita na ang mga klase ng HttpClient at HttpRequest ay maaaring magsagawa ng iba't ibang gawain. Isipin na nagpapatupad ka ng isang kahilingan, at may nangyari sa network at tumagal ito ng 30 segundo. Ito ay mas kapaki-pakinabang upang agad na makatanggap ng isang pagbubukod at tumugon dito nang tama.
pamamaraan ng header().
Maaari ka ring magdagdag ng anumang bilang ng mga header sa anumang kahilingan. At ito ay kasing dali ng anumang bagay. Mayroong isang espesyal na paraan para dito - header() . Halimbawa:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
May isa pang alternatibong paraan upang magtakda ng maraming header nang sabay-sabay. Maaaring magamit ito kung, halimbawa, na-convert mo ang isang listahan ng mga header sa isang array:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
Ang lahat ng elementarya ay simple.
GO TO FULL VERSION