Cara Menggunakan API HttpClient di Java
Inti menggunakan Java HttpClient API adalah untuk membuat httpclient, membina httprequest, dan mengendalikan httpresponse. 1. Gunakan httpclient.newhttpClient () atau httpclient.newbuilder () untuk mengkonfigurasi waktu, proksi, dan lain -lain untuk membuat pelanggan; 2. Gunakan httprequest.newBuilder () untuk menetapkan uri, kaedah, tajuk, dan badan untuk membina permintaan; 3. Hantar permintaan segerak melalui klien.send () atau client.sendasync () untuk menghantar permintaan tak segerak; 4. Gunakan bodyhandlers.ofstring (), buka (), dan lain -lain untuk memproses badan tindak balas; 5. Tetapkan masa tamat dan menangkap IOException dan menggangguTexception atau gunakan luar biasa () untuk mengendalikan kesilapan tak segerak; 6. Gunakan semula contoh httpclient untuk meningkatkan kecekapan. API ini telah disediakan sejak Java 11, menyokong fungsi HTTP moden, mudah dan fleksibel dalam reka bentuk, dan sesuai untuk pelbagai senario dari mudah ke interaksi JSON asynchronous kompleks.
Menggunakan API HTTPClient di Java adalah mudah apabila anda memahami komponen terasnya dan bagaimana untuk mengkonfigurasi permintaan dan mengendalikan respons. Pengenalan Sebagai ciri standard dalam Java 11, HTTPClient menyediakan cara moden, fasih, dan tidak segerak untuk melakukan operasi HTTP, menggantikan pendekatan yang lebih lama seperti HttpURLConnection
.
Inilah cara menggunakannya dengan berkesan:
Membuat dan Mengkonfigurasi HttpClient
HttpClient
bertanggungjawab untuk menghantar permintaan dan menguruskan sambungan. Anda boleh membuatnya menggunakan kaedah newHttpClient()
untuk tetapan lalai atau menyesuaikannya dengan HttpClient.Builder
.
HttpClient client = httpclient.newhttpClient (); // pelanggan lalai
Untuk lebih banyak kawalan, seperti menetapkan masa tamat atau konfigurasi proksi:
Httpclient client = httpclient.newBuilder () .ConnectTimeout (duration.ofseconds (10)) .proxy (proxySelector.of (baru inetocketAddress ("proxy.example.com", 8080))) .build ();
Pelanggan ini boleh digunakan semula merentasi pelbagai permintaan, jadi ia adalah cekap untuk menciptanya sekali dan menggunakannya sepanjang aplikasi anda.
Menghantar permintaan segerak dan tidak segerak
Kelas HttpRequest
mewakili permintaan HTTP. Anda membinanya menggunakan HttpRequest.newBuilder()
, menyatakan URL, kaedah, tajuk, dan badan jika diperlukan.
Permintaan segerak (menyekat)
Gunakan send()
untuk menyekat sehingga respons diterima:
Permintaan httprequest = httprequest.newbuilder () .uri (uri.create ("https://httpbin.org/get")) .Timeout (duration.ofseconds (30)) .Get () .build (); Httpresponse <string> response = client.send (permintaan, Httpresponse.bodyhandlers.ofstring ()); System.out.println ("Status:" Response.StatusCode ()); System.out.println ("Body:" response.body ());
- The
BodyHandlers.ofString()
memberitahu pelanggan bagaimana memproses badan tindak balas. - Sambutan termasuk status, tajuk, dan badan.
Permintaan Asynchronous (tidak menyekat)
Gunakan sendAsync()
untuk mengelakkan menyekat benang semasa:
client.sendasync (permintaan, httpresponse.bodyhandlers.ofstring ()) .theNapply (httpresponse :: body) .ThenAccept (System.out :: Println) .join (); // tunggu siap (pilihan dalam aliran async)
Ini mengembalikan CompletableFuture
, yang membolehkan anda untuk mengikat panggilan balik untuk mengendalikan kejayaan atau kegagalan.
Mengendalikan jenis dan data permintaan yang berbeza
Anda boleh menghantar pelbagai jenis permintaan dengan tajuk, bentuk data, atau JSON.
- Hantarkan dengan badan JSON:
String json = "{\" name \ ": \" John \ ", \" Age \ ": 30}"; Permintaan httprequest = httprequest.newbuilder () .uri (uri.create ("https://httpbin.org/post")) .header ("Kandungan-jenis", "Aplikasi/JSON") .Post (httprequest.bodyPublishers.ofstring (JSON)) .build ();
- Data borang hantar:
Rentetan rentetan = "nama pengguna = John & kata laluan = rahsia"; Permintaan httprequest = httprequest.newbuilder () .uri (uri.create ("https://httpbin.org/post")) .header ("Kandungan-Jenis", "Aplikasi/X-Www-Form-Urlencoded") .Post (httprequest.bodypublishers.ofstring (form)) .build ();
- Letakkan, padam, dll:
Hanya ganti .POST(...)
dengan .PUT(...)
, .DELETE()
, dll.
Pengandaran badan dan jenis tindak balas biasa
BodyHandler
menentukan bagaimana badan tindak balas diproses:
-
BodyHandlers.ofString()
-Untuk respons teks (charset lalai adalah UTF-8) -
BodyHandlers.ofFile(Path.of("file.txt"))
- menjimatkan tindak balas terus ke fail -
BodyHandlers.ofByteArray()
- Untuk data binari -
BodyHandlers.fromLineSubscriber(…)
-untuk pemprosesan line-by-line streaming
Anda juga boleh membuat pengendali badan tersuai untuk kes penggunaan lanjutan.
Pengendalian ralat dan tamat tempoh
Sentiasa menetapkan masa tamat dan mengendalikan pengecualian:
Cuba { Httpresponse <string> response = client.send (permintaan, Httpresponse.bodyhandlers.ofstring ()); jika (response.statusCode () == 404) { System.out.println ("Sumber tidak dijumpai"); } else if (response.statusCode ()> = 400) { System.out.println ("Ralat HTTP:" Response.StatusCode ()); } } menangkap (ioException e) { System.err.println ("Ralat Rangkaian:" E.GetMessage ()); } tangkapan (InterruptedException e) { Thread.currentthread (). Interrupt (); System.err.println ("Permintaan terganggu"); }
Untuk panggilan async, gunakan .exceptionally()
untuk mengendalikan kesilapan dalam rantaian CompletableFuture
.
Pada asasnya, API HTTPClient memudahkan komunikasi HTTP di Java dengan reka bentuk yang bersih dan fleksibel. Sama ada anda memerlukan aliran kerja async yang kompleks dengan JSON, ia mengendalikan kebanyakan senario dengan baik. Ingatlah untuk menggunakan semula pelanggan, menetapkan masa tamat, dan mengendalikan kesilapan dengan sewajarnya.
Atas ialah kandungan terperinci Cara Menggunakan API HttpClient di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Restartyourrouterandcomputertoresolvetemporaryglitches.2.RuntheNetworkTroubleshooterviathesystemtraytoautomaticallyfixcommonissues.3.RenewtheIPaddressusingCommandPromptasadministratorbyrunningipconfig/release,ipconfig/renew,netshwinsockreset,andnetsh

Inti menggunakan javahttpclientapi adalah untuk membuat httpclient, membina httprequest, dan memproses httpresponse. 1. Gunakan httpclient.newhttpClient () atau httpclient.newbuilder () untuk mengkonfigurasi waktu, proksi, dan lain -lain untuk membuat pelanggan; 2. Gunakan httprequest.newbuilder () untuk menetapkan uri, kaedah, header dan badan untuk membina permintaan; 3. Hantar permintaan segerak melalui klien. 4. Gunakan bodyhandlers.ofstr

LinkedList adalah senarai berkaitan dua hala di Java, senarai pelaksanaan dan antara muka Deque. Ia sesuai untuk senario di mana unsur -unsur sering dimasukkan dan dipadam. Terutamanya apabila beroperasi di kedua -dua hujung senarai, ia mempunyai kecekapan yang tinggi, tetapi prestasi akses rawak adalah kurang dan kerumitan masa adalah O (n). Penyisipan dan padam boleh mencapai O (1) di lokasi yang diketahui. Oleh itu, ia sesuai untuk melaksanakan susunan, beratur, atau situasi di mana struktur perlu diubahsuai secara dinamik, dan tidak sesuai untuk operasi intensif bacaan yang sering diakses oleh indeks. Kesimpulan terakhir ialah LinkedList lebih baik daripada ArrayList apabila ia sering diubah suai tetapi mempunyai akses yang lebih sedikit.

ChecksearchSettingslike "MatchentireCellContents" dan "MatchCase" byExpandingOptionsInfindandReplace, memastikan "lookin" issettovaluesand "dalam" tocorrectscope; 2.lookforhiddencharactersorformattingbycopytextdirectly

ThebestJavaIDEin2024dependsonyourneeds:1.ChooseIntelliJIDEAforprofessional,enterprise,orfull-stackdevelopmentduetoitssuperiorcodeintelligence,frameworkintegration,andtooling.2.UseEclipseforhighextensibility,legacyprojects,orwhenopen-sourcecustomizati

Gunakan .equals () untuk membandingkan kandungan rentetan, kerana == hanya membandingkan rujukan objek dan bukannya aksara sebenar; 2. Gunakan .equalsignorecase () apabila membandingkan mengabaikan kes; 3. Gunakan .CompareTo () apabila menyusun mengikut abjad, dan .compareToignorecase () apabila mengabaikan kes; 4. Elakkan memanggil rentetan yang mungkin batal. Sama () hendaklah digunakan untuk menggunakan "literal" .equals (variable) atau objects.equals (str1, str2) untuk selamat mengendalikan nilai null; Pendek kata, selalu perhatikan perbandingan kandungan dan bukannya rujukan,

First,checkif"Clearbrowsingdataonclose"isturnedoninSettingsandturnitofftoensurehistoryissaved.2.Confirmyou'renotusingInPrivatemode,asitdoesnotsavehistorybydesign.3.Disableextensionstemporarilytoruleoutinterferencefromprivacyorad-blockingtoo

PreparyourapplicationByusingMavenorgradletobuildajarorwarfile, externalizingConfiguration.2.Chooseadeploymentenvironment: runonbaremetal/vmwithjava-jarandsystemd, deploywarontomcat, containerizeWithdoStloStLoThoStLoThoStLoThoStLoThoStLoUsToStLoUsToStLoUsToStLours.
