Rumah > Soal Jawab > teks badan
关于Android的三种http请求方式:
(1)okhttp
(2)httpURLConnection
(3)httpClient
谁熟悉的能介绍一下,并解析一下区别呢?
高洛峰2017-04-17 17:47:01
Soalan ini agak bermasalah. Ini bukan tiga cara okhttp hanyalah enkapsulasi tahap yang lebih tinggi daripada httpURLConnection dan httpClient adalah dua cara khusus untuk mencapai akses.
1), HttpClient
HttpClient ialah sub-projek di bawah Apache Jakarta Common Ia digunakan untuk menyediakan kit alat pengaturcaraan pelanggan yang cekap, terkini dan kaya dengan ciri yang menyokong protokol HTTP, dan ia menyokong versi terkini. protokol HTTP dan cadangan.
Ciri:
Berdasarkan bahasa Jawa tulen yang standard. Dilaksanakan Http1.0 dan Http1.1
Melaksanakan semua kaedah HTTP (GET, POST, PUT, DELETE, HEAD, OPTIONS dan TRACE) dalam struktur berorientasikan objek yang boleh dilanjutkan.
Menyokong protokol HTTPS.
Mewujudkan sambungan telus melalui proksi HTTP.
Gunakan kaedah CONNECT untuk mewujudkan sambungan https terowong melalui proksi HTTP.
Asas, Digest, NTLMv1, NTLMv2, Sesi NTLM2, Skim pengesahan SNPNEGO/Kerberos.
Skim pengesahan tersuai pemalam.
Kilang soket mudah alih dan boleh dipercayai menjadikannya lebih mudah untuk menggunakan penyelesaian pihak ketiga.
Pengurus sambungan menyokong aplikasi berbilang benang. Menyokong menetapkan bilangan maksimum sambungan, serta menetapkan bilangan maksimum sambungan untuk setiap hos, dan menemui serta menutup sambungan tamat tempoh.
Mengendalikan kuki secara automatik dalam Set-Cookie.
Dasar kuki tersuai plug-in.
Strim output Permintaan boleh mengelakkan penimbal kandungan dalam strim terus ke pelayan soket.
Strim input Response boleh membaca kandungan yang sepadan terus dari pelayan soket dengan berkesan.
Gunakan KeepAlive untuk mengekalkan sambungan berterusan dalam http1.0 dan http1.1.
Dapatkan kod respons dan pengepala yang dihantar oleh pelayan secara langsung.
Keupayaan untuk menetapkan tamat masa sambungan.
Cara menggunakan
Menggunakan HttpClient untuk menghantar permintaan dan menerima respons adalah sangat mudah dan secara amnya memerlukan langkah berikut.
Buat objek HttpClient.
Buat contoh kaedah permintaan dan nyatakan URL permintaan. Jika anda perlu menghantar permintaan GET, cipta objek HttpGet jika anda perlu menghantar permintaan POST, buat objek HttpPost.
Jika anda perlu menghantar parameter permintaan, anda boleh memanggil kaedah setParams (HetpParams params) yang biasa kepada HttpGet dan HttpPost untuk menambah parameter permintaan untuk objek HttpPost, anda juga boleh memanggil kaedah setEntity (HttpEntity); untuk menetapkan parameter permintaan.
Panggil laksana(permintaan HttpUriRequest) objek HttpClient untuk menghantar permintaan Kaedah ini mengembalikan HttpResponse.
Panggil HttpResponse getAllHeaders(), getHeaders(String name) dan kaedah lain untuk mendapatkan pengepala respons pelayan; panggil kaedah getEntity() HttpResponse untuk mendapatkan objek HttpEntity, yang membungkus kandungan respons pelayan. Program ini boleh mendapatkan kandungan tindak balas pelayan melalui objek ini.
Lepaskan sambungan. Tidak kira sama ada kaedah pelaksanaan berjaya atau tidak, sambungan mesti dilepaskan
2), HttpURLConnection
Cuma cari gambar untuk anda
3) okhttp
Anda boleh mencari dan menghuraikan ini dalam talian, tetapi saya tidak akan mengalihkannya
Satu perkara yang perlu diperkatakan di sini ialah: dalam versi Android 2.3 dan ke atas, cuba gunakan HttpURLConnection, dan dalam versi Android 2.2 dan ke bawah, cuba gunakan HttpClient.
Kerana:
HttpClient
DefaultHttpClient dan abangnya AndroidHttpClient ialah kedua-dua kelas pelaksanaan khusus HttpClient Kedua-duanya mempunyai banyak API dan pelaksanaannya agak stabil dengan sangat sedikit pepijat.
Tetapi pada masa yang sama, disebabkan bilangan API yang banyak dalam HttpClient, sukar untuk kami menaik taraf dan mengembangkannya tanpa memusnahkan keserasian Oleh itu, pasukan Android pada masa ini tidak aktif dalam menambah baik dan mengoptimumkan HttpClient.
HttpURLConnection
HttpURLConnection ialah klien HTTP ringan pelbagai guna yang boleh digunakan untuk melaksanakan operasi HTTP dan sesuai untuk kebanyakan aplikasi. Walaupun API yang disediakan oleh HttpURLConnection agak mudah, ia juga memudahkan kita untuk menggunakan dan memanjangkannya.
Walau bagaimanapun, sebelum versi Android 2.2, HttpURLConnection sentiasa mempunyai beberapa pepijat yang menjengkelkan. Sebagai contoh, apabila kaedah close() dipanggil pada InputStream yang boleh dibaca, ia boleh menyebabkan kumpulan sambungan gagal. Kemudian penyelesaian biasa kami adalah untuk melumpuhkan terus fungsi kolam sambungan
ringa_lee2017-04-17 17:47:01
Perbezaannya sangat besar sehingga memerlukan banyak masa untuk mengembangkannya, jadi mari kita bincangkannya secara ringkas.
HttpClient ialah kit alat klien HTTP yang sangat baik di dunia Java, jadi pada mulanya Android turut menyertakannya dalam sokongan, saya harap semua orang boleh menggunakannya dengan mudah untuk membuat permintaan HTTP. Walau bagaimanapun, perkara yang asalnya disertakan oleh Android ialah versi beta HttpClient, yang mengakibatkan penggunaan HttpClient seterusnya dalam Android dipenuhi pepijat. Jurutera Android nampaknya tidak berniat untuk menyelesaikan masalah ini, malah telah menendang HttpClient keluar dari rangka kerja kemudian, jadi pada dasarnya tidak disyorkan untuk menggunakan HttpClient pada Android.
Mengapa Android sanggup meninggalkan HttpClient? Sebab penting ialah mereka lebih suka menggunakan HttpURLConnection. HttpURLConnection tergolong dalam kategori Java API Berbanding dengan perpustakaan pihak ketiga seperti HttpClient, HttpURLConnection lebih mudah dikawal di tangan Google sendiri. Walau bagaimanapun, enkapsulasi HttpURLConnection agak mudah, dan pemprosesan permintaan HTTP agak rendah, jadi ia tidak begitu mudah digunakan.
OkHttp serupa dengan HttpClient dan juga pustaka pihak ketiga. Walau bagaimanapun, pembungkusannya agak tinggi, yang bermaksud ia lebih ringkas dan mudah digunakan, dan ia mempunyai sokongan khusus untuk Android, yang jauh lebih baik daripada projek yang belum selesai seperti HttpClient.